在GWT / Java中,我们怎样才能获得第一天的第一小时,分钟和秒以及最后一天的最后一小时,最后一分钟和本周的最后一秒?
如何以这种方式格式化数据:
2017-01-08T04:00:00.000Z
答案 0 :(得分:1)
所以你要做的就是用日期做一个简单的数学技巧 代码看起来像(假设您的语言环境中星期一的第一天是星期一)
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));
说明的: 为了找出我们现在所拥有的星期几,我们需要一些常数。在Date Time中只有一个常量为0(setTime(0)) 但这是1970年1月1日星期四01:00。所以,让我们及时回到70'。为了做到这一点,我们划分了现在的时间"时间为"一周",即604800000毫秒。 因为在1970年的第1个星期使用模数所以期待。但周四和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
答案 1 :(得分:0)
使用Date对象的弃用方法。
使用DateTimeFormat
答案 2 :(得分:0)
我认为来自com.google.gwt.user.datepicker.client.CalendarUtil
课程的getStartingDayOfWeek()会对此有所帮助。
在获得第一天的一周后,我们可以直接设置小时,分钟和秒来重置开始时间的日期。
对于上周时间,我们可以添加一些常量值。