小编kan*_*han的帖子

使用ZonedDateTime和Calendar API计算年度周问题

我试图从ISO-8601日期格式字符串输入计算一年中的一周.最初我用java.time.ZonedDateTime尝试了这个,但它给输入日期 - 20-Jan-2049提供了错误的结果.然后我尝试使用Calendar API,它也给出了错误的响应,即31-Dec-2049.

我附上了示例测试代码

public class ZonedDateTimeTest {        
    public static void main(String[] args) throws InterruptedException {
        System.out.println("======================================");
        String instantStr1 = "2049-01-02T03:48:00Z";
        printYearAndWeekOfYear(instantStr1);
        System.out.println("======================================");
        String instantStr2 = "2049-12-31T03:48:00Z";
        printYearAndWeekOfYear(instantStr2);
        System.out.println("======================================");
    }

    public static void printYearAndWeekOfYear(String ISODate) {
        System.out.println("Date provided -> " + ISODate);

        ZonedDateTime utcTimestamp = parseToInstant(ISODate).atZone(ZoneOffset.UTC);
        int year = utcTimestamp.getYear();
        int weekOfYear = utcTimestamp.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
        System.out.println("Using ZonedDateTime API:: Year " + year + " weekOfYear " + weekOfYear);


        Date d1 = Date.from(parseToInstant(ISODate));
        Calendar cl = Calendar.getInstance();
        cl.setTime(d1);
        int year1 = …
Run Code Online (Sandbox Code Playgroud)

java calendar date iso8601 zoneddatetime

3
推荐指数
1
解决办法
1025
查看次数

标签 统计

calendar ×1

date ×1

iso8601 ×1

java ×1

zoneddatetime ×1