Nachtrag zu neulich: JNAerator macht aus einem time_t in etwa Folgendes (schon an Java Naming Conventions angepasst):
1 2 3 4 5 6 7 8 9 |
public class MyTimeStamp extends PointerType { public MyTimeStamp(Pointer address) { super(address); } public MyTimeStamp() { super(); } } |
Damit kann man fast nichts anfangen; insbesondere bekommt man den Eigentlichen Timestamp nicht da raus. Das “Pointer” ist außerdem irreführend, denn C liefert an der Stelle keinen Pointer, sondern die Sekunden seit Epoch. Funktionieren tut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class MyTimeStamp extends Structure { public int value; public MyTimeStamp() {} public MyTimeStamp(int value) { this.value = value; } @Override protected List<String> getFieldOrder() { return Collections.singletonList("value"); } public LocalDateTime asLocalDateTime() { ZonedDateTime dateTime = ZonedDateTime.ofInstant(Instant.ofEpochSecond(value), ZoneId.systemDefault()); return dateTime.toLocalDateTime(); } } |
Quelle, hth
UPDATE: long
durch int
ersetzt, das ist wichtig.