6172

Erweiterte Verwaltung von Datums- und Zeitwerten

Direktes Lesen von Datums- und Zeitdatensätzen über Formelstrings

// Tell GAUSS that 'RateDateTime' is a string date.
data = loadd("usd_cad_wk1.csv", "date($RateDateTime) + RateBid");

Der neue Formelstring-Operator date verändert die Art und Weise, wie Datum und Zeit in GAUSS eingelesen werden.

  • Automatisches Erkennen und Konvertieren vieler gängiger Datums- und Zeitformate
  • Unterstützen von Hunderstel- und Nanosekunden

Konvertieren von Datumsformaten mit flexiblen Formatierungsoptionen

  • Einfache Verwendung
  • Konvertieren aus und in viele Stringformate
  • Unterstützen von DT-Skalaren und POSIX-Datums-/Zeitwerten

String für Datum/Zeit in Sekunden seit der Unix-Epoche …

dt_posix = strctoposix(str_date, fmt_str);
[ "2016-03-28 11:31:43" "2016-04-01 11:34:27" ] strctoposix [ 1459164703 1459251267 ]

... und zurück in Strings im bevorzugten Format

// Convert to friendly string formats for tables and reports
print posixtostrc(dt_posix, fmt_str2);
[ 1459164703 1459510467 ] posixtostrc [ "Monday, March 28, 2016" "Friday, April 1, 2016" ]

DT-Skalare in leserfreundlicheren String-Formaten

// Convert DT dates to strings for easy reading 
dt_str = dttostrc(dt, "%D");
[ "03/17/1912" "09/04/1937" ] strctodt [ 19120317060424 19370904010928 ]

... und zurück in DT-Skalare

// Convert string dates to DT Scalars for plotting
dt = strctodt(dt_str, "%D");
[ "03/17/1912" "09/04/1937" ] strctodt [ 19120317060424 19370904010928 ]

Durchführen von Operationen auf Datums- und Zeitdatensätze

GAUSS 19 beinhaltet eine neue Sammlung von Werkzeugen für Zeitreihen, mit denen Zeitvektoren erzeugt und bearbeitet werden können. Operationen auf Zeitreihendatensätze sind intuitiv und frequenzübergreifend flexibel:

  • Datumsvektoren mit unterschiedlicher Frequenz und Länge erzeugen
  • In Zeitvektoren sowohl vor- als auch zurückspringen
  • Unterschiede in Datums- oder Zeitwerten finden

Erzeugen von Datumssequenzen

Der Befehl “seqadt” im Beispiel unten erzeugt Sequenzen von DT-Skalardaten, während für das Erzeugen von POSIX-Datumswerten der Befehl „seqaposix” verwendet werden kann.

// Create a vector starting at January 1980, with  
// five elements, each incremented by one month  
dt_mths = seqadt(198001, 1, "months", 5);  
  
// Create a vector starting at March 1st, 2016, with  
// 6 elements, each incremented by seven days  
dt_weeks = seqadt(20160301, 7, "days", 6);    

// Create a vector starting at March 1st, 2016 at 09:30:00, with  
// 6 elements, each incremented by 12 seconds  
dt_sec = seqadt(20160301093000, 12, "seconds", 6);

dt_mths = 19800101000000   dt_weeks = 20160301000000   dt_sec = 20160301093000
          19800201000000              20160308000000            20160301093012
          19800301000000              20160315000000            20160301093024
          19800401000000              20160322000000            20160301093036
          19800501000000              20160329000000            20160301093048
                                      20160405000000            20160301093100

Vor- und Zurückdatieren

// Advance 17 days from July 21, 1984
dt_plus = timedeltadt(19840721, 17, "days");

// Regress 3 days from January 8, 1970 
posix_minus = timedeltaposix(604800, -3, "days");

dt_plus = 19840807000000    posix_minus = 345600

Finden der Differenz zwischen zwei Datumswerten

// How many days between April 16 and July 21, 2012  
diff_days = timediffdt(20120416, 20120721, "days"); 

// How many seconds between 09:38:21 and 09:31:00 
diff_sec = timediffdt(20120524093821, 20120524093100,  "seconds");

diff_days = -96    diff_sec = 441