2012-10-19 51 views
1

我有一個像"2007-03-12T04:27:00.000+01:00"這樣的字符串,我想將它轉換爲datetime對象並做一些計算。目前我正在使用joda.time。當我將其轉換爲joda DateTime對象並嘗試打印時,它顯示爲"2007-03-12T08:57:00.000+05:30"。我怎樣才能打印與同一時區的價值。轉換約定日期時間

+2

時區是不同的值是正確的 –

回答

0

的詳細列表,除非你指定你想要的時區,日期默認爲計算機本地時區。 DateTime(Object)構造函數使用偏移量來確定您的意思是什麼時刻,但它不使用偏移量來設置時區。所以而不是:

DateTime localDateTime = new DateTime("2007-03-12T04:27:00.000+01:00"); 

解析偏移量並獲取適當的DateTimeZone並將其賦予DateTime。

DateTimeZone zone1 = DateTimeZone.forOffsetHoursMinutes(01, 00); 
    DateTime localDateTime = new DateTime("2007-03-12T04:27:00.000", zone1); 
0
// get current moment in default time zone 
DateTime dt = new DateTime(); 
// translate to London local time 
DateTime dtLondon = dt.withZone(DateTimeZone.forID("Time Zone ID here"));//Europe/Paris 

你可以找到時區ID here

+0

這裏的時區是不固定的。它可以改變。所以我不能在代碼中對TimeZone ID進行硬編碼。有什麼方法可以從日期字符串中讀取時區ID(末尾有+01:00) – Vishnu