gpt4 book ai didi

java - 如何设置特定时区的日期?

转载 作者:行者123 更新时间:2023-12-01 20:05:20 25 4
gpt4 key购买 nike

我正在使用计时器在特定时间段内执行特定任务。如果您想让任务从该日期开始并在每个周期内重复,则此方法需要 Date 类型。

我几个小时以来一直在尝试寻找解决方案,但无法想出任何办法。我创建日历并为其设置时区。然后,当我从该日历中获取日期时,该日期包含我的本地时间。我尝试使用 SimpleDataFormat 从 Date 获取字符串,它起作用了,因为您单独为 SimpleDataFormat 设置了时区。然后甚至尝试将该字符串解析为日期,但仍然不起作用。我现在有点绝望了。如果我无法使用日历,那么为日历设置时区有什么意义呢?如果没有得到我的本地时间,而是得到了 UTC,我仍然可以做一些事情。但事实也并非如此。我不想让这个应用程序根据计算机的本地时间运行。这是荒谬的,它应该能够获取本地时间并将其转换为我想要的时区并像这样使用它。

代码:

    TimeZone eu = TimeZone.getTimeZone("GMT+1");
TimeZone america = TimeZone.getTimeZone("EST");
TimeZone asia = TimeZone.getTimeZone("GMT+7");
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
df.setTimeZone(eu);
Calendar euCal = Calendar.getInstance(eu);
Date dateEu = euCal.getTime();
System.out.println(dateEu); //Prints local time date
euCal.setTimeZone(eu);
System.out.println(dateEu); //Still prints local time date
String formattedDateEu = df.format(dateEu);
System.out.println(formattedDateEu); //This one works fine but it is string

try {
dateEu = df.parse(formattedDateEu);
} catch (Exception e) {
e.printStackTrace();
}

System.out.println(dateEu); //Fun part. Although I don't get exception dateEu is still not in the time zone I want.

示例输出:

Mon Nov 27 14:37:21 MSK 2017
Mon Nov 27 14:37:21 MSK 2017
27/11/2017 12:37:21
Mon Nov 27 14:37:21 MSK 2017

最佳答案

java.util.Date 对象不包含时区信息。它们代表了时间连续体中的一个瞬间,对于每个人来说都是同一个瞬间,无论他们此刻碰巧在巴黎还是纽约。

但是,当您尝试使用 System.out.println() 打印 Date 对象时,它需要尝试描述自身。因此,它需要描述它所代表的日期和时间,但要做到这一点,它首先需要选择一个时区来代表该日期和时间,因为它没有时区。为了方便起见,它选择用户的系统时区。

您不会通过调用 System.out.println() 来使用 Date,因此您不应该关心 System.out.println() 对它做什么。

关于java - 如何设置特定时区的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47510126/

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