gpt4 book ai didi

java - 在不重新实例化日历和时间戳的情况下获取时间戳

转载 作者:行者123 更新时间:2023-11-29 08:04:31 25 4
gpt4 key购买 nike

我正在尝试获取时间戳。

这有效。

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());

这似乎行不通。你能推荐一下吗?

最佳答案

也许我遗漏了什么,但是这个:

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类是:

A thin wrapper around java.util.Date

Date 表示时间点,与时区无关。您不能在任意时区创建 TimestampDate。这些类不包含此类信息。换句话说,表示 GMT+1 中的 14:00 和 GMT+0 中的 13:00 的日历对象将产生完全相同的 DateTimestamp 对象 - 因为这些日期是一样。

关于java - 在不重新实例化日历和时间戳的情况下获取时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12163788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com