gpt4 book ai didi

Java Date(日历)计算给定日期时间的本地时间一天的开始

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

全部,

在办公室度过了辛苦的一天...我正在尝试以本地时间计算一天的开始,即给定任何日历日期的午夜 00:00:00。

考虑到接下来的几天,我想计算本地时间午夜的一天开始时间:

       Time                     Start Day (Local)            Start Day (GMT)
2011-03-27 00:00:00 GMT --> 2011-03-27 00:00:00 GMT --> 2011-03-27 00:00:00 GMT
2011-03-27 01:00:00 GMT --> 2011-03-27 00:00:00 GMT --> 2011-03-27 00:00:00 GMT
2011-03-27 02:00:00 GMT --> 2011-03-27 00:00:00 GMT --> 2011-03-27 00:00:00 GMT
2011-04-01 00:00:00 BST --> 2011-04-01 00:00:00 BST --> 2011-03-31 23:00:00 GMT
2011-10-30 00:00:00 BST --> 2011-10-30 00:00:00 BST --> 2011-10-29 23:00:00 GMT
2011-10-30 01:00:00 BST --> 2011-10-30 00:00:00 BST --> 2011-10-29 23:00:00 GMT
2011-10-30 01:00:00 GMT --> 2011-10-30 00:00:00 BST --> 2011-10-29 23:00:00 GMT
2011-11-01 00:00:00 GMT --> 2011-11-01 00:00:00 GMT --> 2011-11-01 00:00:00 GMT

目前,我正在使用 SimpleDateFormat 将字符串时间解析为 GregorianCalendar。这给了我计算的 GMT/UTC 时间。

所以我有一些代码将字符串解析为 GregorianCalendar:

public GregorianCalendar getCalendar(String dateTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(sdf.parse(dateTime, new ParsePosition(0)));

return cal;
}

现在我需要将其设置为本地午夜:

public void setToStartOfDayLocally(GregorianCalendar cal) {
????
}

我不太确定目前需要使用日历做什么。不幸的是,我们不会在不久的将来转向 JODA 日期。我的示例也没有考虑不同的时区。

有什么想法吗?

谢谢

安德兹

最佳答案

我认为这段代码可以解决您的问题。我正在使用它从本地时区的时间转换为另一个时区的时间。

public static Date convertLocalDateToDateTimezone( Date localDate, String timezone ) {
TimeZone localTimeZone = TimeZone.getDefault();
TimeZone timezone = TimeZone.getTimeZone( timezone );
long gmtMillis = localDate.getTime();
long result = gmtMillis + timezone.getOffset( gmtMillis ) - localTimeZone.getOffset( gmtMillis );
return new Date( result );
}

希望这有帮助。

关于Java Date(日历)计算给定日期时间的本地时间一天的开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7585745/

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