gpt4 book ai didi

java - java中的日历在更改时区时返回相同的日期?

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

我正在开发一个必须操纵日期的项目。这是我的代码片段我的时区是 IST,转换时区是 CST。

public class Sample {
public static Long time = 1418187600l;
public static TimeZone tz1 = TimeZone.getTimeZone("US/Central");


public static void main(String[] args) {
Calendar c1 = Calendar.getInstance();
System.out.println(c1.getTime()); // output1
c1.setTimeInMillis(time*1000);
System.out.println(c1.getTime());//output 2
System.out.println(c1.get(Calendar.DATE));
c1.setTimeZone(tz1);;
System.out.println(c1.getTime()); //output 3
System.out.println(c1.get(Calendar.DATE));
}

}

当我运行该程序时,我得到了

Wed Dec 10 13:03:42 IST 2014

对于正确的行。

然后将时间设置为1418187600,这个输出也是正确的。

Wed Dec 10 10:30:00 IST 2014

但是,当将时区设置为 CST 并尝试输出日期时,它返回相同的结果

Wed Dec 10 10:30:00 IST 2014

虽然它应该返回2014 年 12 月 9 日 23:00:00

但是,当我尝试 Calendar.data 时,它显示了正确的日期。谁能向我解释一下为什么会这样?

最佳答案

您正在打印一个java.util.Date(调用getTime()的结果)。 Date 根本不包含时区信息 - Date.toString() 始终 显示该 表示的时间点默认时区的日期

基本上,您应该避免调用 Date.toString() - 这是造成很多困惑的原因。请改用 SimpleDateFormat,您可以将其设置为使用特定时区。

或者,如果您使用的是 Java 8,则使用 java.time 类,或 Joda Time否则 - 两者都是比 java.util.Date 和 java.util.Calendar 更好的选择。

关于java - java中的日历在更改时区时返回相同的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27395604/

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