使用 GWT / Java 获取日期?
Get dates with GWT / Java?
在GWT/Java中如何获取第一天的第一小时、第一分钟和第二秒以及最后一天的最后一小时、最后一分钟和最后一秒?
以及如何以这种方式格式化数据:
2017-01-08T04:00:00.000Z
使用 Date 对象的弃用方法。
使用日期时间格式
所以你所要做的就是一个简单的带日期的数学技巧
代码看起来像(假设在您的区域设置中一周的第一天是星期一)
Date myCurrentDate = new Date();
long timeInFirstWeek = (myCurrentDate.getTime() - 345600000 + 3600000) % 604800000;
Date firstDateOfWeek = new Date(myCurrentDate.getTime() - timeInFirstWeek - 3600000);
Date lastDateOfWeek = new Date(firstDateOfWeek.getTime() + 604800000 - 1);
GWT.log(DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(lastDateOfWeek));
GWT.log(DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(firstDateOfWeek));
说明:
要找出我们现在是星期几,我们需要一些常量。在日期时间中只有一个常量是 0 (setTime(0))
但这是 1970 年 1 月 1 日星期四 01:00。让我们回到 70 年代。为此,我们将 "our time now" 除以 "one week" 的时间,即 604800000 毫秒。
因为我们使用我们期望的模数,在 1970 年的第一周。但是星期四和 01:00 小时仍然存在问题。如何解决这个问题?
我们从当前时间中减去四天 = 345600000 毫秒,再加上这个一小时 3600000。现在我们登陆 00:00 1970 年星期一!
现在我们有变量 timeInFirstWeek,它指示仅在 1970 年的第一周过去的时间。换句话说,我们从时间中删除所有其他周,我们只有一周。
所以现在您可能猜到我们所要做的就是从当前日期减去 timeInFirstWeek 以获得一周的第一秒。为了获得一周的最后一秒,我们需要添加一周 = 604800000,然后减去一毫秒。
使用 @Knarf 提到的格式,您可以使用 DateTimeFormat。此外,它已从 GWT 2.8 中的弃用中暂时删除,如代码所述
// Temporarily remove deprecation to keep from breaking teams that don't allow
// deprecated references.
// @Deprecated
我认为 com.google.gwt.user.datepicker.client.CalendarUtil
class 中的 getStartingDayOfWeek() 在这里会有帮助。
得到周首日后,我们可以直接设置时分秒来重新设置开始时间的日期。
对于上周的时间,我们可以添加一些常量值。
在GWT/Java中如何获取第一天的第一小时、第一分钟和第二秒以及最后一天的最后一小时、最后一分钟和最后一秒?
以及如何以这种方式格式化数据:
2017-01-08T04:00:00.000Z
使用 Date 对象的弃用方法。
使用日期时间格式
所以你所要做的就是一个简单的带日期的数学技巧 代码看起来像(假设在您的区域设置中一周的第一天是星期一)
Date myCurrentDate = new Date();
long timeInFirstWeek = (myCurrentDate.getTime() - 345600000 + 3600000) % 604800000;
Date firstDateOfWeek = new Date(myCurrentDate.getTime() - timeInFirstWeek - 3600000);
Date lastDateOfWeek = new Date(firstDateOfWeek.getTime() + 604800000 - 1);
GWT.log(DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(lastDateOfWeek));
GWT.log(DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(firstDateOfWeek));
说明: 要找出我们现在是星期几,我们需要一些常量。在日期时间中只有一个常量是 0 (setTime(0)) 但这是 1970 年 1 月 1 日星期四 01:00。让我们回到 70 年代。为此,我们将 "our time now" 除以 "one week" 的时间,即 604800000 毫秒。 因为我们使用我们期望的模数,在 1970 年的第一周。但是星期四和 01:00 小时仍然存在问题。如何解决这个问题? 我们从当前时间中减去四天 = 345600000 毫秒,再加上这个一小时 3600000。现在我们登陆 00:00 1970 年星期一! 现在我们有变量 timeInFirstWeek,它指示仅在 1970 年的第一周过去的时间。换句话说,我们从时间中删除所有其他周,我们只有一周。
所以现在您可能猜到我们所要做的就是从当前日期减去 timeInFirstWeek 以获得一周的第一秒。为了获得一周的最后一秒,我们需要添加一周 = 604800000,然后减去一毫秒。
使用 @Knarf 提到的格式,您可以使用 DateTimeFormat。此外,它已从 GWT 2.8 中的弃用中暂时删除,如代码所述
// Temporarily remove deprecation to keep from breaking teams that don't allow
// deprecated references.
// @Deprecated
我认为 com.google.gwt.user.datepicker.client.CalendarUtil
class 中的 getStartingDayOfWeek() 在这里会有帮助。
得到周首日后,我们可以直接设置时分秒来重新设置开始时间的日期。
对于上周的时间,我们可以添加一些常量值。