CÓMO

calcular la diferencia de fecha entre dos campos de texto utilizando Arcade en ArcGIS Online

Last Published: January 30, 2024

Descripción

En ArcGIS Online, es posible que la función DateDiff() no funcione de forma correcta al calcular la diferencia de fecha entre dos campos, especialmente si los campos de fecha están en diferentes formatos y se almacenan como texto o cadena de caracteres. La diferencia de fecha entre dos campos de texto se puede calcular mediante una expresión de Arcade. Este método transforma la información temporal cualitativa en métricas cuantitativas, lo que permite enfoques más informados y estratégicos para administrar e interpretar datos sensibles al tiempo.

Note:
The date difference between two text fields can only be calculated if the date format used in the text fields is in dd-mmmm-yyyy.

En este artículo se proporciona el flujo de trabajo para calcular la diferencia de fecha entre dos campos de texto en una tabla de atributos utilizando una expresión de Arcade en ArcGIS Online.

Solución o solución alternativa

  1. En ArcGIS Online, haga clic en la capa de entidades alojada que desee. En la página de detalles del elemento, haga clic en la pestaña Datos.
Note:
Skip to Step 3 if the script is run on an existing field.
  1. En la vista Tabla, cree un nuevo campo. Consulte ArcGIS Online: Agregar un campo para obtener instrucciones. Asegúrese de que Cadena o Doble esté seleccionado en la lista desplegable Tipo. En este ejemplo, se crea un campo denominado Date_Difference.
  2. Haga clic en el encabezado del campo y seleccione Calcular. En este ejemplo, se selecciona Date_Difference.
  3. En el cuadro de diálogo Calcular campo, haga clic en Arcade.
  4. En el cuadro de diálogo Calculadora de Arcade, especifique el campo Expresión de la siguiente manera para calcular la diferencia de fecha en días entre los dos campos de texto:
var months = {
    "January": "01",    
    "February": "02",
    "March": "03",
    "April": "04",
    "May": "05",
    "June": "06", 
    "July": "07",
    "August": "08",
    "September": "09",
    "October": "10",
    "November": "11",
    "December": "12"
};
  1. Esta variable se utiliza para definir el desglose de los meses.
var <variable1> = $feature.<field_name1>;
var <variable2> = $feature.<field_name2>;
  1. Reemplace <variable1> y <variable2> por las variables para representar los nombres de campo. En este ejemplo, se usan startDate y endDate.
  2. Reemplace <field_name1> y <field_name2> por los nombres de los campos que contienen los valores de campo. En este ejemplo, se usan StartDate y EndDate.
var <variable3> = Split(<variable1>, " ");
var <variable4> = Split(<variable2>, " ");
  1. Reemplace <variable3> y <variable4> por las variables para representar la división de <variable1> y <variable2> en una matriz de partes usando la función Dividir. En este ejemplo, se usan dateParts y dateParts2.
var dayNum = dateParts[0];
var monthNum = months[dateParts[1]];
var yearNum = dateParts[2];

var dayNum2 = dateParts2[0]; var monthNum2 = months[dateParts2[1]]; var yearNum2 = dateParts2[2];
  1. Estas variables almacenan los componentes de día, mes y año de la fecha después de la división.
var <variable5>  = yearNum + "-" + monthNum + "-" + dayNum;
var <variable6> = yearNum2 + "-" + monthNum2 + "-" + dayNum2;

var dateDifference = DateDiff(<variable6>, <variable5>, "days");
return dateDifference;
  1. Reemplace <variable5> y <variable6> por las variables deseadas. En este ejemplo, se usan updatedStartDate y updatedStartDate.

A continuación se muestra el código de trabajo completo de la expresión de Arcade.

var months = {
  "January": "01", "February": "02", "March": "03", "April": "04", "May": "05", "June": "06", "July": "07", "August": "08", "September": "09", "October": "10", "November": "11", "December": "12"
}; var startDate = $feature.StartDate; var endDate = $feature.EndDate; var dateParts = Split(startDate, " "); var dateParts2 = Split(endDate, " "); var dayNum = dateParts[0]; var monthNum = months[dateParts[1]]; var yearNum = dateParts[2]; var dayNum2 = dateParts2[0]; var monthNum2 = months[dateParts2[1]]; var yearNum2 = dateParts2[2]; var updatedStartDate = yearNum + "-" + monthNum + "-" + dayNum; var updatedEndDate = yearNum2 + "-" + monthNum2 + "-" + dayNum2; var dateDifference = DateDiff(updatedEndDate, updatedStartDate, "days"); return dateDifference;
  1. Haga clic en Probar para comprobar la expresión y en Aceptar para aplicar la consulta.
Expresión de Arcade especificada en el cuadro de diálogo box.png Calculadora de Arcade
Note:
To calculate the difference between the two date fields in other units such as hours, minutes, or seconds, use the same expression and replace 'days' with the desired unit of measurement.

La siguiente imagen muestra la diferencia de fecha en días entre los dos campos de texto calculados y rellenados en el nuevo campo.

Tabla de atributos que muestra la diferencia de fecha entre dos fields.png de texto

Id. de artículo: 000031779

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga