Zum Inhalt

Datum und Uhrzeit erzeugen

DateTimeGenerator unterstützt feste Werte, begrenzte Zufallsfenster, gewichtete Kalender-/Zeitauswahl, relative Offsets und Epoch-Ausgabe. Seine generierte Signatur in der Datum-/Uhrzeit-Generatorreferenz ist der versionsspezifische Parametervertrag.

Feste und begrenzte Werte

fixed-and-bounded.xml
1
2
3
4
5
6
7
<generate name="events" count="10">
    <variable name="issued_at" generator="DateTimeGenerator(value='2026-07-30 12:00:00')"/>
    <key name="fixed" generator="DateTimeGenerator(value='2026-07-30 12:00:00')"/>
    <key name="window" generator="DateTimeGenerator(min='2026-07-01 00:00:00', max='2026-07-31 23:59:59', random=True)"/>
    <key name="relative" generator="DateTimeGenerator(offset='-7d', max_offset='7d')"/>
    <key name="due_date" generator="DateTimeGenerator(reference='issued_at', offset='30d')" outDateFormat="%Y-%m-%d"/>
</generate>

Relative Fenster verwenden den Runtime-Clock-Anker. Eine gesetzte Ausführungs-Seed nutzt die deterministische Runtime-Uhr; eine ungesetzte Seed liest bewusst die aktuelle Uhrzeit.

Halte einen Datetime-Wert in einer variable roh, solange spätere Felder damit rechnen, und formatiere erst den exportierten Key. reference ist bewusst ein Lookup-Vertrag und kein beliebiges Python: erlaubt sind ein Name im aktuellen Scope, this.<field>, this.parent.<field> oder root.<field>. Aufrufe, Subscripts und ein nacktes parent.<field> werden abgelehnt.

Gewichtete Auswahl

Der Generator kann Monate, Wochentage, Monatstage und Zeitbereiche begrenzen. Gewichtslisten bestimmen die relative Wahrscheinlichkeit innerhalb der jeweiligen Domäne; sie ändern nicht die angeforderte Datensatzanzahl.

Explizite month_weights, weekday_weights, dom_weights, hour_weights, minute_weights oder second_weights überschreiben Sugar für dieselbe Dimension. Deklarative Stringformen unterstützen Listenliterale, Wiederholung wie '[1]*24' und Verkettung wie '[0,0,1]+[0]*9'; List-Comprehensions und beliebige Ausdrücke sind nicht erlaubt.

weighted-selection.xml
1
2
3
<generate name="business_events" count="100">
    <key name="created_at" generator="DateTimeGenerator(min='2026-01-01 00:00:00', max='2026-12-31 23:59:59', weekdays='mon,tue,wed,thu,fri', hours_preset='office', minute_granularity=15)"/>
</generate>

Epoch-Ausgabe

Setze as_epoch=True und wähle die von der Implementierung unterstützte epoch_unit, wenn ein numerischer Zeitstempel benötigt wird. Die Einheit des konsumierenden Systems muss explizit bleiben; Sekunden und Millisekunden sind nicht austauschbar.

Für Feldkonvertierung unterscheidet inDateFormat="epoch" Sekunden, Millisekunden, Mikrosekunden und Nanosekunden anhand der unterstützten Ziffernlängen. outDateFormat akzeptiert epoch, epoch_millis, epoch_micros und epoch_nanos. Bevorzuge im XML diese Feldform; verwende Generator-as_epoch, wenn bereits der erzeugte Wert numerisch sein muss.

Ungültige Fenster, Gewichte, Offsets und Formate verwenden den zentralen Generatorfehlerkatalog. Fange sie nicht in Descriptor-Scripts ab, um sie neu zu interpretieren.