首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java日历日期操作问题

问Java日历日期操作问题
EN

Stack Overflow用户
提问于 2010-11-28 14:18:35
回答 3查看 1.2K关注 0票数 1

我正在尝试以以下格式获取当前日期/时间,

代码语言:javascript
复制
SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z"); 
// should display something similar to  2001.07.04 AD at 12:08:56 PDT
Calendar calendar = Calendar.getInstance();
calendar.set(2009, 2, 4, 10, 22, 44);
format.format( calendar.getTime() );
System.out.println(calendar.getTime());

但它显示为Wed Mar 04 10:22:44 IST 2009。

第二个问题是我想要查看设置时间的毫秒值。

代码语言:javascript
复制
System.out.println(calendar.getTimeInMillis());

但它总是返回当前时间毫秒值,而不是我之前设置的时间。

我在这里遗漏了什么?

EN

回答 3

Stack Overflow用户

发布于 2010-11-28 14:28:18

SimpleDateFormat#format(Object)方法返回带格式的String,它不会影响Calendar#getTime()方法的返回方式。为此,您应该执行以下操作:

代码语言:javascript
复制
System.out.println(format.format(calendar.getTime()));
票数 2
EN

Stack Overflow用户

发布于 2010-11-28 14:30:20

我看到的第一个问题是format.format(calendar.getTime());返回一个字符串,实际上并没有改变日历的格式。您可能希望将最后两行替换为System.out.println(format.format(calendar.getTime()));,以便使用您指定的格式实际打印日期(假设您的SimpleDateFormat是有效的,但看起来没问题)。

不幸的是,我不确定你遇到的第二个问题,但我有一个地方可以让你开始。我不喜欢getTime()和getTimeInMillis()的Javadoc的措辞。getTime()方法返回“表示此日历的时间值的Date对象”,而getTimeInMillis()返回“从纪元起以协调时毫秒表示的当前时间”。对我来说,措辞上的差异意味着getTimeInMillis()不使用由Calendar对象指定的日期,即使它是一个实例方法。尝试使用System.out.println(calendar.getTime().getTime());来调用日历的Date表示形式上的getTime()方法,该文档返回介于1970年1月1日和date对象表示的日期之间的时间(以毫秒为单位)。

票数 1
EN

Stack Overflow用户

发布于 2010-11-28 16:25:19

对于问题的第二部分,您应该调用Calendar.get(Calendar.MILLISECONDS)来检索日历对象的毫秒字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4295664

复制
相关文章

相似问题

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