Select to view content in your preferred language

Wie kann ich die Unix Timestamps eines Feature Service in korrekte Datumswerte konvertieren?

826
0
01-30-2023 01:59 AM
Labels (2)
Jan-Tschada
Esri Contributor
1 0 826

Wenn man direkt die ArcGIS REST API beim Zugriff auf Feature Services verwendet, bemerkt man dass die Datumswerte von Features als Ganzzahl abgebildet werden. Diese repräsentiert das Unix Timstamp in Millisekunden.

Die folgende Funktion erwartet ein FeatureSet als JSON-Objekt und konvertiert die gewünschten Felder in korrekte Datumswerte bzw. in eine ISO-konforme Zeichenkettendarstellung. Ein FeatureSet kann einfach per json.loads(<Esri FeatureSet String>) erzeugt werden. Für den Test haben wir einfach die Ladesäulen in Deutschland - Übersicht (arcgis.com) abgefragt, in der Abfrageansicht einfach (Where: '1=1', Out Fields: Inbetriebnahmedatum, Format: JSON).

from datetime import datetime

def convert_timestamps(feature_set: FeatureSet, field_names, use_iso=True):
    """Converts timestamps (UNIX epoch in [ms]) into datetime objects by modifying the feature set directly."""
    for feature in feature_set.features:
        for attribute_name in feature.attributes:
            if attribute_name in field_names:
                if use_iso:
                    feature.attributes[attribute_name] = datetime.utcfromtimestamp(feature.attributes[attribute_name] * 1e-3).isoformat()
                else:
                    feature.attributes[attribute_name] = datetime.utcfromtimestamp(feature.attributes[attribute_name] * 1e-3)

 

Wenn ihr ISO verwendet, was kommt bei euch als Suffix '+00:00' oder 'Z' (steht nicht für 'Zero' sondern für 'Zulu'), oder etwas ganz anderes?

Labels