当前位置: 首页 > 面试题库 >

在Java中将纪元转换为ZonedDateTime

裘兴思
2023-03-14
问题内容

如何在Java中将纪元转换1413225446.92000ZonedDateTime

给定的代码期望 值,因此将抛出NumberFormatException上面给出的值。

ZonedDateTime.ofInstant(Instant.ofEpochMilli(Long.parseLong(dateInMillis)), ZoneId.of(TIME_ZONE_PST));

问题答案:

罗勒·布尔克(BasilBourque)的答案很不错。从小数部分中取出纳秒到一个纳秒整数可能会导致一个或两个陷阱。我建议:

    String dateInMillis = "1413225446.92000";
    String[] secondsAndFraction = dateInMillis.split("\\.");
    int nanos = 0;
    if (secondsAndFraction.length > 1) { // there’s a fractional part
        // extend fractional part to 9 digits to obtain nanoseconds
        String nanosecondsString
                = (secondsAndFraction[1] + "000000000").substring(0, 9);
        nanos = Integer.parseInt(nanosecondsString);
        // if the double number was negative, the nanos must be too
        if (dateInMillis.startsWith("-")) {
            nanos = -nanos;
        } 
    }
    ZonedDateTime zdt = Instant
            .ofEpochSecond(Long.parseLong(secondsAndFraction[0]), nanos)
            .atZone(ZoneId.of("Asia/Manila"));
    System.out.println(zdt);

此打印

2014-10-14T02:37:26.920+08:00[Asia/Manila]

纳秒级不需要64位,因此我只是使用int

假设:我假设您的字符串包含一个浮点数,并且可以对其进行签名,例如,-1.50这意味着在纪元开始
一秒半。如果某一天的时间用科学计数法(1.41322544692E9)来表示,则以上内容将无效。

如果不是亚洲/马尼拉,请以 _区域/城市_格式替换所需的时区,例如,美国/温哥华,美国/洛杉矶或太平洋/皮特凯恩。避免使用PST等三个字母缩写,因为它们是模棱两可的,通常不是真实的时区。



 类似资料:
  • 问题内容: 我有DATETIME格式的mysql列。 在纪元秒内有没有办法访问此专栏?如果没有,将日期时间格式转换为纪元秒的最佳方法是什么?哪种类型的字段最能捕捉到这一点? 问题答案: 使用MySQL的功能

  • 问题内容: 我目前在使用Python时遇到问题。我有一个Pandas DataFrame,列之一是带有日期的字符串。格式为: “%Y-%m-%d%H:%m:00.000”。例如:“ 2011-04-24 01:30:00.000” 我需要将整列转换为整数。我尝试运行此代码,但是它非常慢,并且有几百万行。 你们知道如何将整个列转换为纪元时间吗? 提前致谢 ! 问题答案: 将字符串转换为using ,

  • 问题内容: 我已经为此战斗了一段时间。我正在尝试将纪元转换为日期对象。时代以UTC发送给我。每当您经过一个纪元时,它就会假定它是本地纪元。我尝试创建一个UTC对象,然后使用它来将其调整为适当的纪元,但是似乎有用的唯一方法是字符串对我没有帮助。如果我将该字符串传递给新日期,则应该注意它是UTC,但不是。 我的下一个尝试是尝试获取本地当前时间段与UTC当前时间段之间的差异,但是我也无法做到这一点。 它

  • 问题内容: 我在UTC有一个时间,我想要从纪元开始经过的秒数。 我正在使用strftime将其转换为秒数。以2012年4月1日为例。 从纪元开始的UTC时间为2012年4月1日,但上述时间返回1333234800,相差1小时。 因此,看来strftime正在考虑我的系统时间,并在某处应用了时区偏移。我以为日期时间纯粹是天真的? 我该如何解决?如果可能的话,除非标准,否则避免导入其他库。(我有可移植

  • 上下文是,我们的产品中有一个现有的应用程序,它生成并向现有的oracle过程发送纪元号&反之亦然。它在该过程中使用如下内容 当我尝试这些查询时,它对我也适用于Oracle10g服务器(如果有关系的话,还有Oracle sql Developer4.x)。 在现有的过程中,要求将值保存为日期本身(时间组件与日期无关),但是在新的要求中,我必须将unix EPOCH值转换为日期时间(小时/分钟/秒级别