我正在尝试获取时间戳。
这很有效。
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());
这似乎不起作用。你能建议吗?
答案 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
代表时间点,与时区无关。您无法在任意时区创建Timestamp
或Date
。这些课程没有这些信息。换句话说,在GMT + 1和13:00 GMT + 0中表示14:00的日历对象将产生完全相同的Date
和Timestamp
个对象 - 因为这些日期是相同的。
答案 1 :(得分:2)
尝试System.currentTimeMillis()
以避免创建日历。