java - 使用 GWT/Java 获取日期?

标签 java gwt

在 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/

相关文章:

java - 监控和更新 Activity 进程数

java - 什么是 JavaScript 事件循环以及它与 GWT 有何关系?

java - 将监听器添加到 SpanElement

javascript - 如何将 Kotlin 代码编译为 JavaScript 以在我的 LibGDX Web 应用程序中使用?

gwt - jetty 和GWT(Google Web工具包)

java - 用于运行显示 java.lang.ClassNotFoundException 的 junit 测试的 Ant 脚本

javascript - 获取输入并将其分配给变量的函数

java - 如何使用 Java 将文档上传到 SharePoint?

java - 如何在gwttestcase中使用junit测试gwt requestbuilder?

java - 生成 .jar -> 找不到包含 .txt 文件