不同的一周没有。使用DateTimeFormatter返回YYYY-w& by DateTimeFormatter.ISO_WEEK_DATE Java8

时间:2017-02-16 10:33:14

标签: java-8 week-number dateformatter

我正在尝试格式化毫秒日期,从样本毫秒值-1451646394000获取周数。

以下是代码段:

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.chrono.IsoChronology;
import java.time.format.DateTimeFormatter;

public class Test1 {
    public static void main(String[] args) {

        final String dateFormat = "YYYY-w";
        ZoneId zoneId_UTC = ZoneId.of("UTC");
        final long indexTimeStampMillis = 1463510726000L;
        LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(indexTimeStampMillis), zoneId_UTC);

        // Case 1:
        final DateTimeFormatter weekFormatter = DateTimeFormatter.ISO_WEEK_DATE;
        String output1 = dateTime.format(weekFormatter);
        System.out.println("Correct output of week number according to ISO Week numbers" + output1);

        // Case 2:
        final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat).withZone(zoneId_UTC)
                .withChronology(IsoChronology.INSTANCE);
        String output = dateTime.format(formatter);
        System.out.println("Week number I am getting in output " + output);

    }

}

在控制台上输出

根据ISO Week number2016-W20-2

更正周数的输出

我在2016-21输出的周数

注意: 根据ISO 8601,上述日期的正确周数为20.日期(毫秒)将转换为2016年5月17日星期二18:45:26 GMT。

0 个答案:

没有答案