我有以下代码:
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,我还没有指定。
由于
答案 0 :(得分: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);
答案 1 :(得分:0)
使用拆分方法。
String splitDateTime[]=dateTimeStart.split("\\+");
dateTimeStart=splitDateTime[0];
答案 2 :(得分: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 ));