gpt4 book ai didi

android - Joda-Time 返回错误的日期

转载 作者:行者123 更新时间:2023-11-30 02:57:28 24 4
gpt4 key购买 nike

嗯,我正在使用 Joda-time

我想将格鲁吉亚日期转换为回历日期,但它返回了从格鲁吉亚到回历的错误日期。

我是这样做的

TimeZone timeZone = TimeZone.getTimeZone("UTC+05:00"); // Pakistan Time Zone
DateTimeZone datetimeZone = DateTimeZone.forTimeZone(timeZone);

Chronology iso = ISOChronology.getInstance(datetimeZone);
Chronology hijri = IslamicChronology.getInstance(datetimeZone);
LocalDate todayGeorgian = new LocalDate(2014,04,13), iso); //Today's Date
LocalDate todayHijri = new LocalDate(todayGeorgian.toDateTimeAtStartOfDay()), hijri);

todayHijri.toString(); // This must return **1435-06-13** but returns 1435-06-12

最佳答案

当您重复调用 LocalDate#toDateTimeAtStartOfDay() 方法时会出现问题。
LocalDate 对象是独立于时区的,但是当您将它转换为 DateTime 时(通过 #toDateTimeAtStartOfDay() 方法),它变得依赖于时区。
之后,您再次将 DateTime 转换为 LocalDate。此转换会导致问题。
请不要在此处使用 LocalDate#toDateTimeAtStartOfDay():

  Chronology iso = ISOChronology.getInstance(datetimeZone);
Chronology hijri = IslamicChronology.getInstance(datetimeZone);
LocalDate todayGeorgian = new LocalDate(2014, 04, 13, iso); //Today's Date
LocalDate todayHijri = new LocalDate(todayGeorgian, hijri);

编辑
此外,"UTC+05:00" 不是 TimeZone 的有效时区。使用:

DateTimeZone datetimeZone = DateTimeZone.forID("Etc/GMT+5");

关于android - Joda-Time 返回错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23036584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com