Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

There's one more test: the Thailand test. I've been bitten by issues in Java where Calendar.getInstance() will return a Thai Buddhist calendar, which is exactly the same as the Gregorian calendar except 543 years in the future.


Exists in iOS too - once built an iPad black car dispatch app where one driver was constantly having issues. After weeks of remote debugging the car company owner just asked the driver to come in, as soon as he told me it was a Buddhist calendar I had it fixed. Now I always triple check my assumptions.


Wouldn’t issues in Java be failing “The Indonesian Test?”


Why are you using the Calendar API in Java? It is full of issues like this.


I never really understood why not simply use milliseconds since the epoch and keep track of a time zone separately if needed... This allows fairly easy conversion to most native systems i have worked with, easy sorting and diff operations as well as final display control. Also don't have a need to be thinking about daylight savings then, or do other conversions for say timesheets.


It depends on what you need to do. If you just need to say when something happened (e.g. some log event) then milliseconds since the epoch is fine. If want a user to schedule a reoccurring meeting at 8am on the first Thursday of every month, you can also keep a set of timestamps as milliseconds since the epoch, but you are going to need to do some work to figure out the right numbers correctly.


> If want a user to schedule a reoccurring meeting at 8am on the first Thursday of every month, you can also keep a set of timestamps as milliseconds since the epoch

No, you can't really, especially if the recurring meetings go on more than a few years into the future. If the time zone rules themselves change (e.g. if the user's country abolishes or introduces DST), then the timestamps you stored will become wrong in light of the change.


Timezone rules change. If you want to be fully robust, you need to store the intent of the time


Because a calendar date and a point in time are entirely different things.


I didn't write the code originally; this was like 15 years ago. If the API still exists people will misuse it.


I don’t know anything about calendar pitfalls or Java, but I would have loved to see a better alternative suggested here.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: