42

我需要转换JsDatejava.util.Date.我搜索过的,但我找不到任何东西。那么你能帮我解决这个问题吗?

编辑:我在 GWT 屏幕上执行此转换过程。我Datepicker在屏幕上,JsDate当我使用它的getValue()方法时它给了我价值。所以我应该将此值放入具有 Date 类型的对象的属性中。

ObjectName.setDate(PickerName.getValue());

我希望我的编辑会更清楚。

编辑2:

这条线是我的问题的解决方案:

myObject.setDate(new Date((long) myPicker.getValue().getTime()));
4

7 回答 7

40

日期转换的最佳方式是使用以毫秒为单位的时间,UTC。JS Date 对象和 java.util.Date 类都支持转换为毫秒 ( getTime()) 并从毫秒实例化(使用构造函数)。

于 2012-07-30T13:50:17.117 回答
36

java.util.Date您可以从 JS 的“自纪元以来的时间”值创建一个对象Date

javascript

var d = new Date().getTime();

爪哇

// get value from client (ajax, form, etc), and construct in Date object

long valueFromClient = ...

Date date = new Date(valueFromClient);

String formatted = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
于 2012-07-30T13:50:17.693 回答
13

如果像我这样的人被迫解析 JS 格式的日期字符串(作为(new Date()).toString()JavaScript 的结果),这里是我使用的 SimpleDateFormat 规范:

DateFormat jsfmt = new SimpleDateFormat("EE MMM d y H:m:s 'GMT'Z (zz)");

如果您可以控制日期的生产者,我同意使用时间戳或至少.toUTCString()肯定更健壮。

于 2015-11-29T23:24:42.167 回答
3

你可能想要这个:

java:
String jsDate="2013-3-22 10:13:00";
Date javaDate=new SimpleDateFormat("yy-MM-dd HH:mm:ss").parse(jsDate);
System.out.println(javaDate);
于 2013-03-22T02:12:21.243 回答
3

ISO 8601 和 java.time

ISO 8601 是日期和时间的国际标准,包括日期和时间格式。几乎任何编程语言都支持它,包括 JavaScript 和 Java。

在 JavaScript 中,使用 . 生成 ISO 8601 格式的字符串Date.toISOString()。我们不需要任何格式化程序。

  var d = new Date();
  var n = d.toISOString();
  console.log(n);

只要您记得它是 UTC 格式,结果在某种程度上是人类可读的,由结尾的Z.

在 Java 中使用Instant.parse(). 我们也不需要在这里指定任何格式化程序。

    String stringFromJavaScript = "2021-07-12T05:54:03.365Z";
    Instant inst = Instant.parse(stringFromJavaScript);
    System.out.println(inst);

输出:

2021-07-12T05:54:03.365Z

该问题要求java.util.Date日期选择器的结果。我们应该避免使用java.util.Date它,因为尽管名称 aDate不代表日期,并且因为Date该类设计不良且早已过时。对于没有时间的日期 aLocalDate是合适的:

    LocalDate date = inst.atZone(ZoneId.systemDefault()).toLocalDate();
    System.out.println(date);

在我的时区,输出是:

2021-07-12

atZone()转换取决于时区,并且仅当 JVM 的默认时区(或您传递到的时区)与日期选择器使用的相同时才会正确。

如果您确实需要Date尚未升级到 java.time 的旧版 API:

    Date oldfashionedDate = Date.from(inst);
    System.out.println(oldfashionedDate);

2021 年 7 月 12 日星期一 07:54:03 CEST

链接

于 2021-07-12T06:01:13.620 回答
0

我建议使用 DateFormat 解析方法(可以在此处找到文档)。它可以解析日期的字符串表示并返回 java.util.Date。

于 2012-07-30T13:48:22.860 回答
0

JS 日期 -- new Date() 2019 年 8 月 14 日星期三 14:54:38 GMT+0530(印度标准时间)

Java 日期 -- new Date().toISOString() "2019-08-14T09:25:50.136Z"

于 2019-08-14T09:26:03.833 回答