在 GWT/Java 中,我们如何获得第一天的第一小时、第一分钟和第二秒,以及最后一天的第一个小时、最后一分钟和最后一秒?
以及如何以这种方式格式化数据:
2017-01-08T04:00:00.000Z
最佳答案
所以你所要做的就是用日期做一个简单的数学技巧 代码如下所示(假设您的区域设置中一周的第一天是星期一)
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 英尺。为了做到这一点,我们将“我们现在的时间”除以“一周”的时间,即 604800000 毫秒。 因为我们使用模数,所以我们期望在 1970 年的第一周。但周四和 01:00 时仍然存在问题。如何解决这个问题? 我们从当前时间减去四天 = 345600000 毫秒,然后加上这一小时 3600000。现在我们降落在 1970 年星期一 00:00! 现在我们的变量 timeInFirstWeek 表示仅在 1970 年的第一周内耗时。换句话说,我们从时间中删除了所有其他周,因此我们只有一周。
所以现在您可能猜测我们所要做的就是从当前日期减去 timeInFirstWeek 以获得本周的第一秒。为了获得一周的最后一秒,我们需要添加一周 = 604800000,然后减去一毫秒。
按照 @Knarf 提到的格式,您可以使用 DateTimeFormat。此外,如代码所示,它已在 GWT 2.8 中暂时从弃用中删除
// Temporarily remove deprecation to keep from breaking teams that don't allow
// deprecated references.
// @Deprecated
关于java - 使用 GWT/Java 获取日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41601371/