Hi all,

G ketemu problem berkaitan dengan DateTime (org.joda.time.DateTime).
Kasusnya ketika g pengen buat tanggal 23-03-1942. G coba dengan new
DateTime(1942, 3, 23, 0, 0, 0, 0) tapi kena exception:

java.lang.IllegalArgumentException: Illegal instant due to time zone
offset transition: 1942-03-22T16:30:00.000
        at 
org.joda.time.chrono.ZonedChronology.localToUTC(ZonedChronology.java:143)
        at 
org.joda.time.chrono.ZonedChronology.getDateTimeMillis(ZonedChronology.java:119)
        at 
org.joda.time.chrono.AssembledChronology.getDateTimeMillis(AssembledChronology.java:133)
        at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:254)
        at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:195)
        at org.joda.time.DateTime.<init>(DateTime.java:227)
        ...

Setelah cari2 di google ternyata ini masalah related to daylight
saving (or something like that) yang menyebabkan pada tanggal
23-03-1942 itu tidak ada jam 00:00:00. Jadi hari itu dimulai dengan
jam 01:30:00 (instead of 00:00:00).

Masalah timbul karena sekarang g punya data di database (oracle) yang
bisa menyimpan tanggal "23-03-1942 00:00:00" tapi di sisi java tidak
memperbolehkan tgl dan jam tersebut. Akhirnya ketika datanya di-load
dari database waktu jadi instance java.sql.Date tanggalnya jadi
22-03-1942 (berkurang 1 hari).

Ada yang pernah ngalamin dan bisa kasih masukan solusinya? Thanks in advance.

Regards,
Jecki

Kirim email ke