首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java -创建不带TimeZone的日历

Java -创建不带TimeZone的日历
EN

Stack Overflow用户
提问于 2012-07-10 23:38:15
回答 3查看 19.6K关注 0票数 4

首先我想说的是,我已经阅读了几个与此类似的帖子,但它们都没有真正解决我的问题。我还想声明,我曾尝试使用SimpleDateFormatjoda.DateTime,但都没有成功。

问题如下:

我有一个Calendar对象,它保存有关特定日期的信息: 2008-04-30T00:00:00Z当使用calendar.getTime()方法时,我可以得到不同的结果,因为我知道该方法正在查找本地值

因此:

代码语言:javascript
复制
UK: 2008-04-30T01:00:00.000+0100

US: 2008-04-30T20:00:00.000-0400

但是我想得到一个Date对象,它只包含日期和时间值"2008-04-30T00:00:00“,完全忽略任何时区。

我该怎么做呢?

正如我之前提到的,我尝试使用SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"),但是我总是得到相同的结果。

任何帮助都是非常感谢的干杯。

EN

回答 3

Stack Overflow用户

发布于 2015-11-10 12:13:05

发现您可以使用以下代码清除时区:

Calendar cal = Calendar.getInstance(); cal.clear(Calendar.ZONE_OFFSET);

票数 9
EN

Stack Overflow用户

发布于 2012-07-10 23:46:35

您是否使用标准构造函数来初始化Calendar?如果您使用了允许指定时区和区域设置的构造函数会怎么样?

代码语言:javascript
复制
protected Calendar(TimeZone zone, Locale aLocale)
票数 1
EN

Stack Overflow用户

发布于 2019-06-13 03:37:57

正如其他人指出的那样,没有时区,CalendarDate对象就不能存在。

我相信您可能希望将Java8中引入的LocalDateTime类与新的time API一起使用:

代码语言:javascript
复制
LocalDateTime literal = LocalDateTime.of(2008, 4, 30, 0, 0, 0);
LocalDateTime parsed = LocalDateTime.parse("2008-04-30T00:00:00"); // ISO-8601 by default
Assert.assertEquals(literal, parsed);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11416914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档