1

可能会有简单而快速的答案,但我仍然无法找出为什么是

Date date = new Date(60000); //one min.
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String dateStr = dateFormat.format(date);

dateStr - 01:01:00 还有一小时。时区?没有它我该如何设置?谢谢。

4

3 回答 3

3

Date代表一个特定的时刻,而不是持续时间。new Date(60000)不会创造“一分钟”。请参阅该构造函数的文档

使用指定的毫秒值初始化此 Date 实例。该值是自 1970 年 1 月 1 日 GMT 以来的毫秒数。

如果您想要“从现在开始一分钟”,您可能希望使用Calendar该类,特别是该add方法。

更新:

DateUtils有一些您可能会觉得有用的有用方法。如果您想要 HH:mm:ss 格式的经过时间,您可以尝试DateUtils.formatElapsedTime. 就像是:

String dateStr = DateUtils.formatElapsedTime(60);

请注意,60 以秒为单位。

于 2013-03-04T23:25:45.897 回答
1

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 as 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 时区:

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

于 2013-03-20T10:38:54.517 回答
0

我建议使用 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
于 2013-03-05T00:43:09.637 回答