获取时间戳而不重新安排日历和时间戳

时间:2012-08-28 16:40:16

标签: java calendar

我正在尝试获取时间戳。

这很有效。

final Calendar cal = new GregorianCalendar(tz);
final Timestamp ts = new Timestamp(cal.getTimeInMillis());

但是,我不想每次都重新实例化变量,我需要获取时间戳。我怎么能这样做?

我试着做..

//instantiate the variables.

    private final Calendar cal = new GregorianCalendar(tz);
    private final Timestamp ts = new Timestamp(cal.getTimeInMillis());

Inside a method()

    // trying to ask calendar to recalculate the time -- not working.
    cal.setTimeZone(tz); // I tried cal.clear() but it is giving me time during 1970 which I don't want.
    ts.setTime(cal.getTimeInMillis());

这似乎不起作用。你能建议吗?

2 个答案:

答案 0 :(得分:3)

也许我错过了什么,但是这个:

final Calendar cal = new GregorianCalendar(tz);
final Timestamp ts = new Timestamp(cal.getTimeInMillis());

相当于更轻量级:

final Timestamp ts = new Timestamp(System.currentTimeMillis());

这是因为具有特定时区的新GregorianCalendar指向现在。并且由于调用getTimeInMillis()“忽略”时区,因此您基本上要求自纪元以来以毫秒为单位的当前时间。可以使用System.currentTimeMillis()完成此操作。

Timestamp课程是:

  

java.util.Date

周围的薄包装

Date代表时间点,与时区无关。您无法在任意时区创建TimestampDate。这些课程没有这些信息。换句话说,在GMT + 1和13:00 GMT + 0中表示14:00的日历对象将产生完全相同的DateTimestamp个对象 - 因为这些日期是相同的。

答案 1 :(得分:2)

尝试System.currentTimeMillis()以避免创建日历。