当前位置: 首页 > 知识库问答 >
问题:

如何转换一个TemporalAccess毫秒时间戳(使用即时)

隗瑞
2023-03-14

我正在尝试将临时Accessor转换为unix时间戳,但在某些情况下会出错。

下面是重现问题的代码示例:

    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .appendPattern("yyyy-MM-dd HH:mm:ss")
        .appendFraction(ChronoField.MICRO_OF_SECOND, 0, 6, true)
        .toFormatter();
    TemporalAccessor accessor = formatter.parse("1970-01-01 00:01:00.00");
    Instant instant = Instant.from(accessor);
    Instant.EPOCH.until(instant, ChronoUnit.MILLIS);

以下是我得到的错误:

异常线程"main"java.time.DateTimeExc0019:无法从TemporalAccitor:{}获取即时,ISO解析为1970-01-01T00:01类型java.time.format.解析

我只使用此日期格式收到此错误,因此问题可能来自我的DateTimeFormatter(最初我使用的是另一种更通用的方式,我只收到此格式的错误)。

共有1个答案

郤坚诚
2023-03-14

您需要在DateTimeFormatter中指定时区,如下所示:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .appendPattern("yyyy-MM-dd HH:mm:ss")
        .appendFraction(ChronoField.MICRO_OF_SECOND, 0, 6, true)
        .toFormatter()
        .withZone(ZoneId.systemDefault());
TemporalAccessor accessor = formatter.parse("1970-01-01 00:01:00.00");
Instant instant = Instant.from(accessor);
Instant.EPOCH.until(instant, ChronoUnit.MILLIS);
 类似资料:
  • 我有一个Unix历元时间戳(以毫秒为单位),需要获取本地时间的日期字符串。 这是我的代码: 由上述函数生成的原始时间戳和结果日期、小时和所有其他值均以UTC为单位。如何更改代码以在当地时间获取它?

  • 我想把UTC的时间戳转换成Postgres中的毫秒。我在Ruby控制台上使用这个查询(使用Postgres)。我的问题是: 以上查询结果, 2018年7月5日星期四05:05:39 UTC 00:00至1530767139732.35 输出看起来不错,但在“.”之后我不需要35岁。有没有办法得到13位毫秒的输出。 我会很感激你的帮助。

  • 我从GPS接收机接收到一个时间戳,它以秒后的微秒时间表示:

  • 我将MSSTAMP作为Oracle中的“毫秒时间戳”,格式:1483228800000。如何将该毫秒时间戳转换为日期格式“YYYY-MM”,以便计算前几年每月完成的行数。 我已经尝试了TO_DATE、CAST、TO_CHAR的不同变体——但我无法做到这一点。

  • 问题内容: 如何将格式的人类可读时间转换为Unix时间戳(以 毫秒为单位) ?我发现了很多类似的问题,但是没有找到这个特定的问题/答案。 问题答案: 在Python 3中,这可以分两个步骤完成: 将时间字符串转换为对象 将对象的时间戳乘以1000,以将其转换为毫秒。 例如这样: 输出: 接受您的时间字符串和格式字符串作为输入。该TIMESTRING(第一个参数)指定 什么 你真的想转换为对象。格式

  • 目前我正在逐行读取数据文件。每行都有一个时间戳,格式为dd/MM/yyyy HH: mm: ss“我需要将其转换为自纪元以来的毫秒。我尝试了两种方法 1个 2. 在分析之后,我发现方法一的成本非常高,而方法二的成本比第一种低一些,但仍然很高。第一个需要大约1600ms的CPU时间,第二个需要1100ms的CPU时间。 问题- 1个 2. 谢谢 ** ** 好啊在这里添加更多细节。测试运行了1000