我需要将JsDate
转换为java.util.Date.
我搜索但我找不到任何内容。你能解决这个问题吗?
编辑:我在GWT屏幕上执行此转换过程。我在屏幕上显示Datepicker
,当我使用JsDate
方法时,它会给我getValue()
值。所以我应该将此值放入具有Date类型的对象的属性中。
ObjectName.setDate(PickerName.getValue());
我希望我的编辑会更清晰。
编辑2:
这一行解决了我的问题:
myObject.setDate(new Date((long) myPicker.getValue().getTime()));
答案 0 :(得分:35)
日期转换的最佳方式是使用以毫秒为单位的时间,UTC。 JS Date对象和java.util.Date类都支持转换为毫秒(getTime()
)并从毫秒实例化(使用构造函数)。
答案 1 :(得分:34)
您可以从JS java.util.Date
Date
个对象
<强>的javascript 强>
var d = new Date().getTime();
<强>的java 强>
// 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);
答案 2 :(得分:11)
如果像我这样的人被迫解析JS格式的日期字符串(作为JavaScript中(new Date()).toString()
的结果),这里是我使用的SimpleDateFormat规范:
DateFormat jsfmt = new SimpleDateFormat("EE MMM d y H:m:s 'GMT'Z (zz)");
如果您掌握了日期的制作者,我同意使用时间戳或至少.toUTCString()
肯定更强大。
答案 3 :(得分:2)
你可能想要这个:
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);
答案 4 :(得分:1)
ISO 8601 是日期和时间的国际标准,包括日期和时间格式。几乎任何编程语言都支持它,包括 JavaScript 和 Java。
在 JavaScript 中,使用 Date.toISOString()
生成 ISO 8601 格式的字符串。我们不需要任何格式化程序。
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
,因为尽管名称 Date
并不代表日期,而且 Date
类的设计很差并且已经过时了。对于没有时间的日期,LocalDate
是合适的:
LocalDate date = inst.atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(date);
在我的时区输出是:
<块引用>2021-07-12
转换取决于时区,并且只有在 JVM 的默认时区(或您传递给 atZone()
的时区)与日期选择器使用的时区相同时才会正确。
如果对于尚未升级到 java.time 的旧 API,您确实需要 Date
:
Date oldfashionedDate = Date.from(inst);
System.out.println(oldfashionedDate);
<块引用>
2021 年 7 月 12 日星期一 07:54:03 CEST
答案 5 :(得分:0)
我建议使用DateFormat解析方法(可以找到doc here)。它可以解析日期的字符串表示并返回java.util.Date。
答案 6 :(得分:0)
JS日期- 新的Date() 2019年8月14日星期三14:54:38 GMT + 0530(印度标准时间)
Java日期- 新的Date()。toISOString() “ 2019-08-14T09:25:50.136Z”