我正在尝试以以下格式获取当前日期/时间,
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。
第二个问题是我想要查看设置时间的毫秒值。
System.out.println(calendar.getTimeInMillis());但它总是返回当前时间毫秒值,而不是我之前设置的时间。
我在这里遗漏了什么?
发布于 2010-11-28 14:28:18
SimpleDateFormat#format(Object)方法返回带格式的String,它不会影响Calendar#getTime()方法的返回方式。为此,您应该执行以下操作:
System.out.println(format.format(calendar.getTime()));发布于 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对象表示的日期之间的时间(以毫秒为单位)。
发布于 2010-11-28 16:25:19
对于问题的第二部分,您应该调用Calendar.get(Calendar.MILLISECONDS)来检索日历对象的毫秒字段。
https://stackoverflow.com/questions/4295664
复制相似问题