5

由于 java.util.Date 大部分已被弃用,因此获取给定日期(UTC 时间)的时间戳的正确方法是什么?可以与之相提并论的那一款System.currentTimeMillis()

4

4 回答 4

10

使用Calendar类,您可以在特定时区的特定时间创建时间戳。一旦你有了它,你就可以得到毫秒时间戳来比较:

Calendar cal = new GregorianCalendar();
cal.set(Calendar.DAY_OF_MONTH, 10);
// etc...

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

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

于 2009-03-11T00:49:28.593 回答
7

Date 用于许多事物的“官方”替代品是 Calendar。不幸的是,它相当笨拙且设计过度。你的问题可以这样解决:

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

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

于 2009-03-11T00:50:09.590 回答
3

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

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

绝对值得一试。

于 2009-03-11T00:56:10.013 回答
1

看看Calendar类。

您可以使用当前时间(未弃用)制作数据,然后从中制作日历(还有其他方法)。

于 2009-03-11T00:46:04.983 回答