gpt4 book ai didi

java - 夏令时问题

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

使用以下内容:

public static void main(String[] args) throws ParseException {
System.out.println(convertDate("2017-03-12 02:00", true));
}

public static Date convertDate(final String dateStr, final Boolean isDateTime) throws ParseException{
Date tmpDate = null;
if ( dateStr == null || dateStr.isEmpty() ) {
return tmpDate;
}
String dateFormat = "yyyy-MM-dd";
// LOGGER.debug("Input date string: " + dateStr);


if (isDateTime) {
dateFormat = "yyyy-MM-dd HH:mm";
// TimeZone frTimeZone = TimeZone.getTimeZone("UTC");
// sdf.setTimeZone(frTimeZone);
}
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);


try {
tmpDate = sdf.parse(dateStr);
} catch (ParseException e) {

}
return tmpDate;
}

输出获取:2017 年 3 月 12 日星期日 03:00:00 EDT预期输出:2017 年 3 月 12 日星期日 02:00:00 EDT

第二次尝试:

public static Date convertDate(final String dateStr, final Boolean isDateTime) throws ParseException{
Date tmpDate = null;
String dateFormat = "dd-M-yyyy hh:mm:ss a";
if (isDateTime) {
dateFormat = "yyyy-MM-dd HH:mm";
}
SimpleDateFormat sdfAmerica = new SimpleDateFormat(dateFormat);
Date date = sdfAmerica.parse(dateStr);
// TimeZone tz = TimeZone.getDefault();
DateTime dt = new DateTime(date);
DateTimeZone dtZone = DateTimeZone.forID("America/New_York");
DateTime dtus = dt.withZone(dtZone);
TimeZone tzInAmerica = dtZone.toTimeZone();
Date dateInAmerica = dtus.toLocalDateTime().toDate(); //Convert to LocalDateTime first
sdfAmerica.setTimeZone(tzInAmerica);
System.out.println("dateInAmerica"+dateInAmerica);
tmpDate=sdfAmerica.parse(dateStr);
boolean inDaylightTime=tzInAmerica.inDaylightTime(tmpDate);
if(inDaylightTime){
Calendar cal = Calendar.getInstance();
int hour=(tzInAmerica.getDSTSavings() / (1000 * 60 * 60));
System.out.println("hour::::"+hour);
cal.setTime(sdfAmerica.parse(dateStr));
System.out.println("date:::"+cal.getTime());
cal.add(Calendar.HOUR, hour);
tmpDate=cal.getTime();
}
return tmpDate;
}

输出:2017 年 3 月 12 日星期日 04:00:00 EDT

但是在获取日期的正确输出方面面临问题:2017-03-12 02:00

最佳答案

在第一个示例中,您说您预计Sun Mar 12 02:00:00 EDT 2017,但得到了Sun Mar 12 03:00:00 EDT 2017

请注意,夏令时于 3 月 12 日开启。所以应该没有 2:00 AM EDT。当时钟即将到达凌晨 2:00 时,就会变成凌晨 3:00。因此,无论您的代码在做什么,您的期望似乎都是不正确的。

https://www.timeanddate.com/time/change/usa?year=2017

关于java - 夏令时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43066108/

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