我尝试以下列格式获取当前日期/时间
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());
但它显示为IST 2009年3月4日10:22:44。
第二个问题是我想看到设定时间的毫秒值。
System.out.println(calendar.getTimeInMillis());
但它总是返回当前时间毫秒值,而不是我之前设置的时间。
我在这里缺少什么?
答案 0 :(得分:2)
SimpleDateFormat#format(Object)
方法返回格式化的String
,它不会影响Calendar#getTime()
方法返回的方式。为此,你应该做一个:
System.out.println(format.format(calendar.getTime()));
答案 1 :(得分:1)
我看到的第一个问题是format.format(calendar.getTime());
返回一个字符串,并没有实际更改日历的格式。您将要使用System.out.println(format.format(calendar.getTime()));
替换最后两行,以使用您指定的格式实际打印出日期(假设您的SimpleDateFormat有效,但看起来很快就可以了。)
不幸的是,不确定你遇到的第二个问题,但我有一个地方可以帮助你开始。我不是getTime()
和getTimeInMillis()
的Javadocs措辞的粉丝。 getTime()
方法返回“Date
对象,表示此Calendar
的时间值”,而getTimeInMillis()
返回“当前时间为UTC毫秒的时间”。对我而言,措辞的不同意味着getTimeInMillis()
不使用Calendar对象指定的日期,即使它是一个实例方法。请尝试System.out.println(calendar.getTime().getTime());
,以便在日历的getTime()
表示上调用Date
方法,该文档返回1970年1月1日到Date对象表示的日期之间的时间(以毫秒为单位)
答案 2 :(得分:1)
对于问题的第二部分,您应该调用Calendar.get(Calendar.MILLISECONDS)
来检索日历对象的毫秒字段。