我正在使用Jodatime for android并得到了这个:
LocalDate.now() //returns 2015-12-17, which is today
new LocalDate(LocalDate.now().toDate().getTime()); //returns 2015-12-16, which is yesterday
这真是出乎意料!
那是
我将日期存储在我的数据库中并稍后创建它们,但似乎没有任何问题。
答案 0 :(得分:2)
我终于得到了答案,在你调用init的app方法中,你只需再写一行:
JodaTimeAndroid.init(this);
DateTimeZone.setDefault(DateTimeZone.forTimeZone(TimeZone.getDefault()));
这样您就可以将jodatime的默认值设置为智能手机的默认值。
我真的很惊讶这在任何地方都找不到。
答案 1 :(得分:0)
This part正在指明这一点。
将日期时间作为java.util.Date获取。创建的Date对象具有 与此日期完全相同的年,月和日。时间会是 设置为该日期的最早有效时间。
转换为JDK日期与JDK日期一样充满复杂性 构造函数不像DST转换那样表现。 此方法通过先猜测然后调整JDK来工作 日期,直到它有最早的有效时刻。这也处理了 JDK时区数据与Joda-Time时间不同的情况 区域数据。
对于你的问题(我如何使用jodatime存储日期?),你可以使用毫秒来存储日期。
试试这个;
public static void main(String[] args) {
DateTime local = new DateTime();
DateTime utc = new DateTime(DateTimeZone.UTC);
System.out.println("local zone = " + local.getZone());
System.out.println(" utc zone = " + utc.getZone());
DateTimeFormatter format = DateTimeFormat.mediumDateTime();
System.out.println(" local: " + format.print(local));
System.out.println(" utc: " + format.print(utc));
System.out.println("millis: " + utc.getMillis());
}
输出是;
local zone = America/Caracas
utc zone = UTC
local: 18.Ara.2015 05:06:00
utc: 18.Ara.2015 09:36:00
millis: 1450431360816