日期字符串不是correnct
也许会有简单快速的答案,但我仍然无法找出原因是日期字符串不是correnct
Date date = new Date(60000); //one min.
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String dateStr = dateFormat.format(date);
dateStr结果 - 一点01分00秒 还有一种多小时。时区?我如何在没有它的情况下进行设置?谢谢。
Date
代表一个特定的时刻,而不是一个持续时间。 new Date(60000)
不会创建“一分钟”。请参阅docs for that constructor:
使用指定的毫秒值初始化此Date实例。该值是1970年1月1日以来的毫秒数。
如果你想“从现在开始一分钟”,你可能会想使用Calendar
类代替,特别是add
方法。
更新:
DateUtils
有一些有用的方法,你可能会发现有用。如果您希望以HH:mm:ss格式显示已用时间,则可以尝试DateUtils.formatElapsedTime
。例如:
String dateStr = DateUtils.formatElapsedTime(60);
请注意,60是以秒为单位。
谢谢。我如何显示两个日期之间的差异?可以说date1.getTime() - date2.getTime()= 60000.我想显示它。 diffTimeStr =(新的SimpleDateFormat(“HH:mm:ss”))。格式(60000); diffTimeStr是“01:01:00为什么?又一次多一小时 – vlkpo 2013-03-04 23:32:49
@vlkpo java很快就会获得新的apis,但暂时我建议使用joda时间库:http://joda-time.sourceforge.net /key_duration.html – kritzikratzi 2013-03-04 23:53:13
@vlkpo再次,“日期”不是持续时间......我已更新我的答案,以包含看起来与您所寻找的内容更加接近的内容 – kabuko 2013-03-05 00:51:24
我建议使用TIMEUNIT
“TimeUnit表示粒度的一个给定的单位时间段,并提供实用的方法进行跨单元转换,和在这些单元中执行的定时和延迟操作。TimeUnit不保持时间信息,但仅有助于组织和使用时间表示,这些时间表示可以在各种情况下单独维护。纳秒被定义为千分之一微秒,微秒千分之一毫秒,千分之一千分之一秒,一分钟六十秒,一小时六十分钟,一天二十四小时。“
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/TimeUnit.html
Date date = new Date(); // getting actual date
date = new Date (d.getTime() + TimeUnit.MINUTES.toMillis(1)); // adding one minute to the date
三种方式使用java.util.Date
指定一个分:
1.使用SimpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"))
为shahtapa说:
Date date = new Date(60*1000); //one min.
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateStr = dateFormat.format(date);
System.out.println("Result = " + dateStr); //Result should be 00:01:00
2ü唱java.util.Calendar
为kabuko说:
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.MINUTE,1); //one min.
Date date = calendar.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String dateStr = dateFormat.format(date);
System.out.println("Result = " + dateStr); //Result should be 00:01:00
其他calendar.set()
语句也可以使用:
calendar.set(Calendar.MILLISECOND,60*1000); //one min.
calendar.set(1970,0,1,0,1,0); //one min.
3。使用这些setTimeZone
和Calendar
的想法,并迫使Calendar
到 UTC时区 为Simon Nickerson说:
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.clear();
calendar.set(Calendar.MINUTE,1); //one min.
Date date = calendar.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateStr = dateFormat.format(date);
System.out.println("Result = " + dateStr); //Result should be 00:01:00
注:
我有一个类似的问题:日期1970-01-01
在我的情况下是-3 600 000
毫秒(1小时后)java.util.Date(70,0,1).getTime() -> -3600000
你想要的结果是什么? – codeMagic 2013-03-04 23:23:11
预计的结果是00:01:00。 – vlkpo 2013-03-04 23:30:35