2014-10-30 31 views
2

我有以下代碼:喬達DateTime對象添加1小時

 Log.e(TAG, "startTime = " + startTime); 

     DateTime dateTimeStart = new DateTime(startTime); 

     Log.e(TAG, "dateTimeStart = " + dateTimeStart ); 

其中當登出產生以下:

startTime = 2014-10-30T12:00:00+00:00 

dateTimeStart = 2014-10-30T13:00:00.000+01:00 

爲什麼要在原來的時間裏增加額外的小時?

編輯 如何刪除+1:00,我沒有指定。

由於

回答

4

DateTime是由日期,時間,和一個時區的一個目的。在你的情況下,你使用默認系統時區startTime並將其轉換爲等效的DateTime

+01:00的意思是「這個時間戳是在一些UTC + 1個時區」,所以12:00:00.000+00:00的含義一樣13:00:00.000+01:00

所以你戳在12:00英國時間創建= 13:00歐洲中部時間。

如果你想在UTC時間,做

DateTime dateTimeStart = new DateTime(startTime, DateTimeZone.UTC); 
0

用途劃分方法。

String splitDateTime[]=dateTimeStart.split("\\+"); 

dateTimeStart=splitDateTime[0]; 
+0

'+'不是一個有效的正則表達式。 – 2014-10-30 11:04:49

+0

已更新,謝謝指出 – 2014-10-30 11:10:49

0

默認DateTime::toString()方法返回格式爲yyyy-MM-ddTHH:mm:ss.SSSZZ的日期。
+01:00+00:00是時區偏移量(日期格式爲ZZ)。

所以如果你想打印沒有時區偏移的日期,你應該使用另一種格式。例如。用方法DateTime::toString(String)

String dtFormat = "yyyy-MM-dd'T'HH:mm:ss"; 
Log.e(TAG, "startTime = " + startTime.toString(dtFormat)); 
... 

Log.e(TAG, "dateTimeStart = " + dateTimeStart.toString(dtFormat));