gpt4 book ai didi

Java日期转换: Different week of year returned

转载 作者:行者123 更新时间:2023-12-02 03:26:13 26 4
gpt4 key购买 nike

我想返回日期的星期和年份,例如 2016/06 。因此我使用下面的代码来尝试一下:

public static void main(String[] args) throws ParseException {

DateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
DateFormat formatWeekAndYear = new SimpleDateFormat("yyyy/ww");

String articleDate = "31.12.2015 11:26:00";

long keyDate = format.parse(articleDate).getTime();
System.out.println("KeyDate: " + keyDate + " = " + format.format(keyDate));

String formatted = formatWeekAndYear.format(keyDate);
System.out.println(formatted);
}

我想返回<Year> / <Week Of Year>任何输入日期的字符串,例如31.12.2015 11:26:00 (参见代码)。

现在奇怪的行为:

根据运行 Java 程序的计算机,我会得到不同的结果!

这是我本地电脑上的输出:

KeyDate: 1451557560000 = 31.12.2015 11:26:00
2015/53

在远程计算机上运行完全相同的程序,我得到:

KeyDate: 1451557560000 = 31.12.2015 11:26:00
2015/01

为什么退回电脑A 2015/53另一个2015/01 。我花了几天时间才发现这个差异,有人可以解释一下吗?

最佳答案

原因很简单...您忽略了语言环境,但是一年中的周的定义 100% 取决于区域设置。

在这种情况下,您应该考虑使用 locale 创建 SimpleDateFormat 的实例 ...

原因是:美国的第一周与德国的第一周不一样。

考虑下面的代码,它解释了不同语言环境下相同代码的不同结果...

示例:

public static void main(String[] args) {

DateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
DateFormat formatWeekAndYear = new SimpleDateFormat("yyyy/ww");
DateFormat formatWeekAndYearGERMANY = new SimpleDateFormat("yyyy/ww", Locale.GERMAN);

String articleDate = "31.12.2015 11:26:00";

long keyDate = 1451557560000L;
System.out.println("KeyDate: " + keyDate + " = " + format.format(keyDate));

System.out.println("in USA:" + formatWeekAndYear.format(keyDate));
System.out.println("aber in Berlin:" + formatWeekAndYearGERMANY.format(keyDate));
}

输出如下:

KeyDate: 1451557560000 = 31.12.2015 11:26:00

in USA: 2015/01

aber in Berlin: 2015/53

关于Java日期转换: Different week of year returned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38843232/

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