【问题标题】:Different date time formatting output on java & moment jsjava和moment js上的不同日期时间格式输出
【发布时间】:2015-02-06 03:42:10
【问题描述】:

我们有一个要求,我们希望在服务器端代码和移动客户端 JavaScript 代码中使用一致的日期时间格式。我们决定使用 moment.js,在客户端进行日期格式化。然而,两者的输出并不同步。

Time Format String:  "**YYYY-MM-DD'T'HH:mm:ss.SSSZZ**"

Java 代码和输出

    java.util.Date d2 = new java.util.Date();
    SimpeDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD'T'HH:mm:ss.SSSZZ");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    String formattedDate = sdf.format(d2);
    System.out.println(formattedDate);


Output:2015-02-06T03:28:24.333+0000

Moment JS 输出

    var d2 = new Date();
    var format = "YYYY-MM-DD'T'HH:mm:ss.SSSZZ";
    alert(moment(d2).format(format));

Output: 2015-02-06'T'03:28:24.333+0000

在 moment.js 中,T 用引号括起来。 同样,如果格式为“YYYY-MM-DD'TXYZ'HH:mm:ss.SSSZZ”。 Java 输出:2015-02-06TXYZ03:28:24.333+0000, 力矩输出:2015-02-06'T1423193658Y+05:30'09:04:18.351+0530

谁能给我建议一个解决方案,或者更好的替代方案。

【问题讨论】:

  • 为什么你会自动认为它会匹配 Java?时刻是它自己的东西。人们将它与各种不同的后端一起使用。

标签: javascript datetime momentjs


【解决方案1】:

您可以使用时刻和格式来使用与 java 兼容的 ZonedDateTime:

moment(this.date).format('YYYY-MM-DDTHH:mm:ss:SSZ')

【讨论】:

    【解决方案2】:

    var 格式 = "YYYY-MM-DD'T'HH:mm:ss.SSSZ"

    设置格式时,请尝试去掉“T”周围的引号。

    【讨论】:

    • 好吧,正如我所提到的,时间格式化程序必须在服务器端和客户端代码之间保持一致。此外,这不仅仅是关于 T。可能还有其他角色。 Java 格式化程序,简单地将所有内容按原样放置在引号内。但现在似乎没有这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2018-11-25
    相关资源
    最近更新 更多