有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    您可以使用Java7yyyy-MM-dd'T'HH:mm:ss.SSSXXX)中的SimpleDateFormat,或者使用JodaDateTimeFormatyyyy-MM-dd'T'HH:mm:ss.SSSZZ)将时区偏移格式化为+01:00

  2. # 2 楼答案

    以下是2017年的答案。如果有任何方法可以(确实有),那么就把过时的类SimpleDateFormat扔掉,在^{}中使用现代且更方便的类。特别是,所需的格式2012-11-25T23:50:56.193+01:00符合ISO-8601,因此新的类是现成的,只需使用OffsetDateTime.toString()

        OffsetDateTime time = OffsetDateTime.now();
        System.out.println(time.toString());
    

    这印的是

    2017-05-10T16:14:20.407+02:00
    

    不过,有一件事你可能不想知道,它在几秒钟内打印出的3个小数组的数量与打印OffsetDateTime对象的精度一样多。显然,在我的电脑上,“现在”的精度是毫秒(秒加三个小数)

    例如,如果您有一个老式的Date对象,它是通过调用某个遗留方法获得的,我建议您首先将其转换为Instant,这是一个现代类。在此基础上,您可以根据自己的需求轻松进行其他转换:

        Date now = new Date();
        OffsetDateTime time = now.toInstant().atZone(ZoneId.systemDefault()).toOffsetDateTime();
        System.out.println(time.toString());
    

    我真的做了很多必要的转换atZone(ZoneId.systemDefault())产生了一个ZonedDateTime,它的toString()并不总是给你你想要的格式;但它可以很容易地格式化为:

        ZonedDateTime time = now.toInstant().atZone(ZoneId.systemDefault());
        System.out.println(time.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));