HOW TO

Calculate the date difference between two text fields using Arcade in ArcGIS Online

Last Published: January 30, 2024

Beschreibung

In ArcGIS Online funktioniert die Funktion "DateDiff()" möglicherweise nicht wie gewünscht, wenn die Datumsdifferenz zwischen zwei Feldern berechnet wird, insbesondere wenn die Datumsfelder in unterschiedlichen Formaten vorliegen und als Text oder Zeichenfolge gespeichert werden. Die Datumsdifferenz zwischen zwei Textfeldern kann anhand eines Arcade-Ausdrucks berechnet werden. Diese Methode wandelt qualitative, zeitbezogene Informationen in quantitative Kennwerte um und ermöglicht so fundiertere und strategischere Ansätze zum Verwalten und Interpretieren zeitkritischer Daten.

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.

In diesem Artikel wird der Workflow zum Berechnen der Datumsdifferenz zwischen zwei Textfeldern in einer Attributtabelle mit einem Arcade-Ausdruck in ArcGIS Online beschrieben.

Lösung oder Problemumgehung

  1. Klicken Sie in ArcGIS Online auf den gewünschten gehosteten Feature-Layer. Klicken Sie auf der Elementdetailseite auf die Registerkarte Daten.
Note:
Skip to Step 3 if the script is run on an existing field.
  1. Erstellen Sie in der Tabellensicht ein neues Feld. Anweisungen hierzu finden Sie unter ArcGIS Online: Hinzufügen eines Feldes. Stellen Sie sicher, dass String oder Double in der Dropdown-Liste Typ ausgewählt ist. In diesem Beispiel wird ein Feld mit dem Namen "Date_Difference" erstellt.
  2. Klicken Sie auf den Feldkopf, und wählen Sie Berechnen aus. In diesem Beispiel wurde "Date_Difference" ausgewählt.
  3. Klicken Sie im Dialogfeld Feld berechnen auf Arcade.
  4. Geben Sie im Dialogfeld Arcade-Berechnung das Feld Ausdruck wie folgt an, um die Datumsdifferenz zwischen den beiden Textfeldern in Tagen zu berechnen:
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. Mit dieser Variable wird die Aufteilung der Monate definiert.
var <variable1> = $feature.<field_name1>;
var <variable2> = $feature.<field_name2>;
  1. Ersetzen Sie <variable1> und <variable2> durch die Variablen, die die Feldnamen darstellen sollen. In diesem Beispiel werden "startDate" und "endDate" verwendet.
  2. Ersetzen Sie <field_name1> und <field_name2> durch die Namen der Felder, die die Feldwerte enthalten. In diesem Beispiel werden "StartDate" und "EndDate" verwendet.
var <variable3> = Split(<variable1>, " ");
var <variable4> = Split(<variable2>, " ");
  1. Ersetzen Sie <variable3> und <variable4> durch die Variablen, die die Aufteilung von <variable1> und <variable2> in ein Array von Teilen mithilfe der Funktion "Teilen" darstellen sollen. In diesem Beispiel werden "dateParts" und "dateParts2" verwendet.
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. Mit diesen Variablen werden die Tages-, Monats- und Jahreskomponenten des Datums nach der Teilung gespeichert.
var <variable5>  = yearNum + "-" + monthNum + "-" + dayNum;
var <variable6> = yearNum2 + "-" + monthNum2 + "-" + dayNum2;

var dateDifference = DateDiff(<variable6>, <variable5>, "days");
return dateDifference;
  1. Ersetzen Sie <variable5> und <variable6> durch die gewünschten Variablen. In diesem Beispiel werden "updatedStartDate" und "updatedStartDate" verwendet.

Im Folgenden finden Sie den voll funktionsfähigen Code des Arcade-Ausdrucks.

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. Klicken Sie auf Test, um den Ausdruck zu prüfen, und dann auf OK, um die Abfrage anzuwenden.
Arcade expression specified in the Arcade Calculator dialog box.png
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.

Die folgende Abbildung zeigt die Datumsdifferenz zwischen den zwei berechneten Textfeldern im neuen Feld.

Attribute table displaying the date difference between two text fields.png

Artikel-ID: 000031779

Benachrichtigungen erhalten und Lösungen für neue oder häufige Probleme finden

Unser neuer KI-Chatbot stellt zusammengefasste Antworten und Videolösungen für Sie bereit.

Esri Support App herunterladen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Esri Support App herunterladen

Zu Download-Optionen wechseln