如何获取两个保存当前时间的日期对象,一个保存在格林尼治标准时间,另一个保存在本地

时间:2018-09-04 14:22:10

标签: android date datetime

我正在尝试填充2个日期对象,一个是本地时间,另一个是UTC。

我不打算在GMT / UTC中作为日期打印日期,请不要建议DateFormatting,并且在您阅读完整的问题之前不要重复说它。

本地,我没问题:

Date dateLocal = new Date();

问题是我无法将utcDate设置为UTC。

像这样使用日历:

TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
Calendar c = new GregorianCalendar();
c.setTime(new Date());
c.setTimeZone(TimeZone.getTimeZone(utcTimeZone.getID()));
Date utcDate = c.getTime();

在调试或提交到Web服务时, utcDate 会显示在我的本地时区中,而不是UTC。

使用Joda:

DateTime utcDateTime = DateTime.now(DateTimeZone.UTC);
Date utcDate = utcDateTime.toDate();

同一问题,调试/提交给Webservice时的utcDate在本地时间显示。

这是调试对象的外观:

enter image description here

这是一个问题,因为这使Web服务(我无权访问)认为这次是UTC,因此,当它进行工作和进行转换时,时间总是减少4个小时,因为对我而言,UTC本地转换是GMT -4。

我能够以UTC时间提交日期的唯一方法是添加:

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

但这也会更改 LocalTime 对象,即使在更改默认TimeZone之前已定义并设置了该对象。

所以我知道了,Date()对象使用JVM语言环境,因此,只要创建日期,就可以在默认时区中创建日期,并且显然只要更改默认时区,所有的Date对象(即使它们已经创建)更改为新的默认时区...我知道Date对象只是现在到1970年之间的毫秒数,但是Web服务中显然考虑了TimeZone,这使我的结果搞砸了...如何以我想要的方式获取日期?

0 个答案:

没有答案