gpt4 book ai didi

java - SimpleDateFormat 日期解析不正确?

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

所以我有一些代码:

String ANNOUNCEMENT_DATE = "Sat, 25-Aug-2014 11:00:00 GMT"; 

DateFormat df = new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss z");

Date announcementDate = null;

try {
announcementDate = df.parse(announcementDateString);
} catch (ParseException e) {
e.printStackTrace();
}

announcementEpochTime = announcementDate.getTime()/1000;

所以,正如我所料,直到今天 11:00:00,以下表达式解析为 false:

System.currentTimeMillis()/1000 >= announcementEpochTime

但是,在 11:00:00 之后,我预计它会解析为 true...但事实并非如此。

我正在查看announcementDate的fastTime值,它似乎明显大于当前系统时间,即使是现在(33分钟后)

当我在调试器中查看解析的announcementDate 时,我看到:

 2014-08-25T12:00:00.000+0100

这对我来说看起来不对。我确信时区或类似问题存在一些问题,但我无法完全理解它。

知道为什么我的日期解析不正确吗?

我知道在很多情况下这些事情都不是微不足道的问题,所以我希望有人会熟悉这些实用程序并立即发现我的问题(并节省我半天的疯狂谷歌搜索时间)

最佳答案

您显然居住在爱尔兰,夏季夏令时为 +1 小时。

这意味着,您的 IST 时间 12:00 对应于 GMT 11:00。因此,这意味着:您的假设将在本地时间 12:00 成立。

我用这个小程序进行了测试,夏令时比 GMT 多 2 小时(德国):

public class Time {
public static void main(String[] args) {
String ANNOUNCEMENT_DATE1 = "Mon, 25-Aug-2014 10:00:00 GMT";
String ANNOUNCEMENT_DATE2 = "Mon, 25-Aug-2014 11:00:00 GMT";

DateFormat df = new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss z", Locale.ENGLISH);

Date announcementDate1 = null;
Date announcementDate2 = null;
try {
announcementDate1 = df.parse(ANNOUNCEMENT_DATE1);
announcementDate2 = df.parse(ANNOUNCEMENT_DATE2);
} catch (ParseException e) {
e.printStackTrace();
}

long now = System.currentTimeMillis();
System.out.println(now >= announcementDate1.getTime());
System.out.println(now >= announcementDate2.getTime());
}
}

在 12:54(本地时间)运行会产生以下输出:

true

false

关于java - SimpleDateFormat 日期解析不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25484036/

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