gpt4 book ai didi

java - java中 'EST'时区的两个日期之间的差异

转载 作者:行者123 更新时间:2023-11-30 07:41:17 26 4
gpt4 key购买 nike

我必须将字符串解析为日期,比方说 givenDate,到 EST 时区。另外,我必须获取当前日期,让我们说 EST 时区的 currentDate 。我当前的时区是 IST (GMT+5:30)。

如果 currentDate 大于给定日期,那么我需要在 currentDate 中添加一天。

这是我已经实现的解决方案。

SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
Calendar givenDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
givenDate .setTime(df.parse("01/08/2016"));

Calendar currentDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
if(currentDate.get(Calendar.YEAR) > givenDate .get(Calendar.YEAR) ||
currentDate.get(Calendar.DAY_OF_YEAR) > givenDate.get(Calendar.DAY_OF_YEAR)){
currentDate.add(Calendar.DATE, 1);
}

System.out.println("Final date : "+df.format(currentDate.getTime()));

Is there any better solution for this?

此外,以下内容一直让我心烦意乱。

考虑代码片段

SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");   
Calendar givenDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
givenDate .setTime(df.parse("01/07/2016"));
System.out.println(givenDate .get(Calendar.DATE)); //6
System.out.println(givenDate .get(Calendar.DAY_OF_MONTH)); //6
System.out.println(givenDate .get(Calendar.DAY_OF_YEAR)); //6

Why am I getting 6 for DATE, DAY_OF_MONTH, DAY_OF_YEAR? I would expect they must return 7 as the given date is 7 days from the starting of the year 2016.

但是如果我在上述代码第一行之后添加以下行,上述字段将返回 7。这可能是什么原因?

df.setTimeZone(TimeZone.getTimeZone("EST"));

.

最佳答案

需要将时区设置到SimpleDateFormat类中,然后就可以将解析出的Date与当前时间进行比较:

SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
df.setTimeZone(TimeZone.getTimeZone("EST"));
Date givenDate = df.parse("01/08/2016");

Calendar currentDate = Calendar.getInstance();

if(currentDate.getTime().compareTo(givenDate) > 0) {
currentTime.add(Calendar.DATE, 1);
}

请记住,Date 对象表示 UTC 时区中的当前时间(自纪元以来的秒数)。

关于java - java中 'EST'时区的两个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34663270/

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