给定日期的System.currentTimeMillis()?

时间:2009-03-11 00:38:30

标签: java timestamp

由于java.util.Date基本上已被弃用,因此获取给定日期UTC时间的时间戳的正确方法是什么?可以与System.currentTimeMillis()进行比较的那个。

4 个答案:

答案 0 :(得分:10)

使用Calendar课程,您可以在特定时区的特定时间创建时间戳。完成后,您可以获得毫秒时间戳以与:

进行比较
Calendar cal = new GregorianCalendar();
cal.set(Calendar.DAY_OF_MONTH, 10);
// etc...

if (System.currentTimeMillis() < cal.getTimeInMillis()) {
  // do your stuff
}

编辑:更改为使用更直接的方法从Calendar实例获取以毫秒为单位的时间。感谢Outlaw程序员

答案 1 :(得分:7)

“官方”替代了很多东西,日期用于日历。不幸的是,这是相当笨拙和过度设计。你的问题可以这样解决:

long currentMillis = System.currentTimeMillis();
Date date = new Date(currentMillis);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
long calendarMillis = calendar.getTimeInMillis();
assert currentMillis == calendarMillis;

日历也可以以不同方式初始化,甚至一次一个字段(小时,分钟,秒等)。看看Javadoc。

答案 2 :(得分:3)

虽然我自己没有尝试过,但我相信如果您的项目允许使用外部库,您应该查看JODA-Time项目(开源)。 AFAIK,JODA时间在日期/时间为新的JSR(通常在Java7中)做出了很多贡献。

许多人声称JODA时间是所有java.util.Date/Calendar问题的解决方案; - )

绝对值得一试。

答案 3 :(得分:1)

查看Calendar课程。

您可以使用当前时间创建数据(不推荐使用),然后从中创建日历(还有其他方式)。