Я попытался это с помощью Jodatime DateTime
,DateTime дает неожиданный результат
DateTime dateTime = DateTime
.parse("1-JAN-1900", DateTimeFormat.forPattern("dd-MMM-yyyy"))
.plusSeconds(2075866000);
String dateTimeStr = DateTimeFormat.forPattern(
"yyyy/MM/dd HH:mm:ss").print(dateTime);
System.out.println(dateTimeStr);
Я также попытался с помощью Jodatime MutableDateTime
MutableDateTime dateTime = MutableDateTime
.parse("1-JAN-1900", DateTimeFormat.forPattern("dd-MMM-yyyy"));
dateTime.add(DurationFieldType.seconds(), 2075866000);
String dateTimeStr = DateTimeFormat.forPattern(
"yyyy/MM/dd HH:mm:ss").print(dateTime.toDateTime());
System.out.println(dateTimeStr);
Оба дают мне один и тот же результат, 1965/10/13 06:09:54
.
Ожидаю, 1965/10/13 05:26:40
, вместо этого. Я получаю это с помощью Oracle запрос, указанный ниже,
select to_date('1900-JAN-1') + 2075866000/86400 from dual
И на противоречие между Joda и Oracle, я попытался Wolframalpha, что также дает мне тот же результат, как Oracle.
Кто-нибудь, пожалуйста, объясните, почему это различие?
'2075866000/86400', что такое' 86400'? –
Какова ваша часовая зона по умолчанию? Если это в Индии, в 1930-х годах в ней были некоторые странные корректировки, которые повлияли бы на результат. –
Я замечаю, что вы находитесь в Малайзии - как сказал Джим Гаррисон, корректировки этого часового пояса в прошлом веке могут объяснить несоответствие. См. Эту страницу: http://en.wikipedia.org/wiki/Time_in_Malaysia –