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