[英]How to convert LocalDate.now() to CEST/CET LocalDate.now()?
[英]Unexpected result with jodatime LocalDate.now()
LocalDate.now() //returns 2015-12-17, which is today
new LocalDate(LocalDate.now().toDate().getTime()); //returns 2015-12-16, which is yesterday
真是出乎意料!
就是它
我將日期存儲在數據庫中的時間很長,然后再創建它們,但是似乎沒有任何問題。
我終於得到了答案,在調用init的app方法中,您只需要再寫一行:
JodaTimeAndroid.init(this);
DateTimeZone.setDefault(DateTimeZone.forTimeZone(TimeZone.getDefault()));
這樣,您可以將jodatime的默認值設置為智能手機的默認值。
我真的很驚訝,這在任何地方都找不到。
這部分指定了這一點。
以java.util.Date獲取日期時間。 創建的Date對象具有與此日期完全相同的年,月和日。 時間將設置為該日期的最早有效時間。
轉換為JDK Date充滿了復雜性,因為JDK Date構造函數的行為不如您預期的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.