Moja strefa czasowa to CET (Berlin).
I choć DateTime Sprawdzam Joda zauważyli kilka dziwnych rzeczy:Nieparzyste wyniki w Joda Data na 01.04.1893
new DateTime(1893, 4, 1, 0, 0, 0, 0);
=> java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition:
new DateTime(1893, 3, 31, 0, 0, 0, 0).toDate();
=> Fri Mar 31 00:06:32 CET 1893
6 minut 32 sekund przesunięcie strefy czasowej wynikającej z nieistniejącego czasie ??
Muszę powiedzieć, że jest to bardzo nieoczekiwane, ponieważ nie określiłem żadnej informacji o strefie czasowej i dlatego nie spodziewałem się napotkać tego rodzaju problemu.
Jeśli w marcu 1893 roku nie ma CET (Berlin) - dlaczego new DateTime(1893, 3, 31, 0, 0, 0, 0)
nie wybiera strefy czasowej pasującej do podanego czasu (tj. 0 minut i 0 sekund)?
Jakie są moje opcje, aby uzyskać prawidłowy czas w programie DateTime?
- EDYT -
Problem wydaje się być toDate(). Zmontowałem go przed opublikowaniem pytania.
sama Joda faktycznie działa prawidłowo:
new DateTime(1893, 3, 31, 0, 0, 0, 0);
=> 1893-01-01T00:00:00.000+00:53:28
Tyle, że konwersja do Data przenosi część przesunięciem w minutach i sekundach.
IOW: To nie jest błąd, to funkcja. Dosłownie. –
Dzięki za linki. Widzę, że CET nie istniało przed tą datą. Widzę, że joda faktycznie tworzy datę poprawnie. Moim problemem wydaje się być konwersja do java.util.Date, która nie obsługuje dobrze zmiany (zobacz moją edycję). Ale to prawdopodobnie większy problem z Date niż DateTime. – Stroboskop