Diese Datei enthält vier Datenzeilen, und die ersten acht Bytes jeder Zeile sind die Daten für Jahr, Monat und Tag.
Wie erstelle ich mit JSL richtig eine Tabelle?

Das Datum und die Uhrzeit am Anfang von Zeile 4 sollten sein:
20230120 15:00
Vielen Dank!
bb = Load Text File( "123.DAT", blob() );
z = Length( bb ) / 56;
For( k = 1, k <= z, k++,
a = Blob Peek( bb, (k - 1) * 56, 56 );
y = Blob To Matrix( a, "uint", 2, "little", 28 );
s = Blob To Matrix( a, "uint", 4, "little", 28 );
b = Blob To Matrix( a, "uint", 4, "little", 28 );
);
Sie haben zwei wichtige Hinweise in der Arbeit, die Sie bereits geleistet haben: ein tatsächliches Datum und den Code Zeit_t . Time_t ist eine Unix-Sache. Probieren Sie ein Tool wie den Epochenkonverter aus und schieben Sie das Ihnen bekannte Datum hinein:
the red number is what we wantthe red number is what we wantthe red number is what we wantDie rote Zahl ist das, was wir wollen
Hey! Diese Nummer erscheint auch in Ihrem Dateninspektor! Es ist ein int 32! Das heißt, wir können Ihre Daten wie folgt laden:
za = Open( "z:/123.zip", zip );
blob = za << read( "123.dat", Format( blob ) );
dates = Blob To Matrix( blob, "int", 4, "little", 14 )[0, 1];
dates += 1jan1970;
For( i = 1, i <= 4, i += 1,
Show( i, As Date( dates[i] ) )
);
ich = 1;
As Date(dates[i]) = 20Jan2023:06:56:00;
ich = 2;
As Date(dates[i]) = 20Jan2023:06:57:00;
ich = 3;
As Date(dates[i]) = 20Jan2023:06:58:00;
ich = 4;
As Date(dates[i]) = 20Jan2023:07:00:00;
Die Unix-Epoche beginnt am 1. Januar 1970, was 0 ist. Die JMP-Epoche beginnt am 1. Januar 1904, was 0 ist. Durch Hinzufügen des Werts 1Jan1970 von JMP zu einem Unix-Datum wird das Unix-Datum in ein JMP-Datum konvertiert.
Der Blob-zu-Matrix-Aufruf macht 14 4-Byte-Zahlen pro Zeile; der Index [0,1] bedeutet 0: alle 4 Zeilen behalten und 1: das erste Element in jeder Zeile behalten.
Während Sie mit dem Epochenkonverter spielen, probieren Sie einige Daten im Jahr 2038 aus. 2038 ist das Jahr der nächsten zwei Jahr-2000-ähnlichen Ereignisse. Ja, es gibt zwei Ausgaben in einem Jahr. Der erste ist der Epoche um 03:14:07 UTC am 19. Januar 2038. Der Zweite ist der Dritte GPS-Woche überschlagen , was wahrscheinlich unbemerkt bleiben wird. Der dritte Rollover findet zwischen dem 20. und 21. November 2038 statt.