gpt4 book ai didi

java - ww SimpleDateFormat 的奇怪行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:52 28 4
gpt4 key购买 nike

谁能解释为什么我在尝试解析日期时会得到这些值?我尝试了三种不同的输入,如下所示:

1) 2013 年第三周

Date date = new SimpleDateFormat("ww.yyyy").parse("02.2013");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR) + "." + cal.get(Calendar.YEAR));

输出:02.2013(如我所料)

2) 2013 年第一周

Date date = new SimpleDateFormat("ww.yyyy").parse("00.2013");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR) + "." + cal.get(Calendar.YEAR));

输出:52.2012(这对我来说很好,因为 2013 年的第一周也是 2012 年的最后一周)

3) 2013 年第二周

Date date = new SimpleDateFormat("ww.yyyy").parse("01.2013");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR) + "." + cal.get(Calendar.YEAR));

输出:1.2012(这对我来说绝对没有意义)

有谁知道为什么会这样??我需要以格式(一年中的一周)解析日期。(年)。我使用了错误的模式吗?

最佳答案

您使用的是 ww,它是“一周中的一周”,但是 yyyy 是“日历年”而不是“星期年”。设置年中的星期几然后设置日历年会产生问题,因为它们实际上只是单独的编号系统。

您应该在您的格式字符串中使用 YYYY 来指定周-年...尽管不幸的是,您随后似乎无法获取 a 中的值理智的方式。 (我期望 Calendar.WEEKYEAR 常量,但没有这样的东西。)

此外,一年中的星期值从 1 开始,而不是 0...并且两周中没有星期; 要么是 2013 年的第一周要么是 2012 年的最后一周...不是两者都是。

如果可能的话,我个人会避免使用周年和周 - 它们可能会非常困惑,尤其是当一个日历年中的日期在不同的周年中时。

关于java - ww SimpleDateFormat 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23542216/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com