2014-10-30 41 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));