【问题标题】:How do I store time in a variable?如何将时间存储在变量中?
【发布时间】:2012-11-07 00:09:00
【问题描述】:

我的一个类Event 将有一个名为timeStamp 的实例字段。现在,我有另一个类,它将根据与此处无关的其他算法设置timeStamp

我的问题是我应该将这个timeStamp 存储在什么类型 中?根据我迄今为止的研究,我的印象是它应该以毫秒为单位计算,因此可能将其存储在 double 中。

基本上,我的Clock 类以以下格式模拟时间:hh:mm:ss。但是,由于它是我正在开发的离散事件模拟,它会从一个事件跳到另一个事件,它由timeStamp 值确定,即每个事件对象都有一个timeStamp 值,该值存储在PrioityQueue 中。所以我考虑将timeStamp 以与Clock 相同的格式存储,我想这将涉及我创建一个新类TimeStamp,然后成为timestamp 的类型。还是应该让时钟以毫秒为单位模拟时间?

您对此有何看法?我不确定实现这一点的最有效/最干净的方式。

【问题讨论】:

标签: java datetime time milliseconds


【解决方案1】:

当日期存储为自纪元以来的毫秒数时,您应该使用long

没有必要double,因为您对毫秒不感兴趣。

您不能使用 int,因为最大 int 值仅大到以毫秒为单位表示大约一个月。

你可以得到这样的值:

long millisSinceEpoch = Calendar.getInstance().getTimeInMillis();

【讨论】:

  • 我们可以避免浮动比较不精确!
【解决方案2】:

将毫秒存储在long 中。

您可以使用 Joda Time 中的 DateTime 类对结果数字执行各种复杂的操作。 This overload 允许您将毫秒值直接插入到 DateTime 对象中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-03
    • 2019-07-21
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多