如何在 Java 中将 JavaScript 日期转换为日期
How to Convert JavaScript Date to Date in Java?
我需要将JsDate
转换为我搜索java.util.Date.
但我找不到任何东西。那么你能帮我解决这个问题吗?
编辑:我在GWT屏幕上进行此转换过程。我在屏幕上有Datepicker
,当我使用它getValue()
方法时,它给了我JsDate
价值。所以我应该把这个值放到一个具有Date类型的对象的属性中。
ObjectName.setDate(PickerName.getValue());
我希望我的编辑会更清晰。
编辑2:
这一行是我问题的解决方案:
myObject.setDate(new Date((long) myPicker.getValue().getTime()));
日期转换的最佳方法是使用以毫秒为单位的时间,UTC。JS Date对象和java.util.Date类都支持转换为毫秒(getTime()
(和从毫秒实例化(使用构造函数(。
您可以从 JS Date
的"自纪元以来的时间"值创建一个java.util.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);
如果像我这样的人被迫解析 JS 格式的日期字符串(作为 JavaScript 中(new Date()).toString()
的结果(,以下是我使用的 SimpleDateFormat 规范:
DateFormat jsfmt = new SimpleDateFormat("EE MMM d y H:m:s 'GMT'Z (zz)");
如果你可以控制日期的生产者,我同意使用时间戳或至少.toUTCString()
肯定更健壮。
ISO 8601 和 java.time
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);
周一 7月 12 07:54:03 CEST 2021
链接
- 维基百科文章:ISO 8601
- Oracle 教程:日期时间解释如何使用 java.time。
你可能想要这个:
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);
我建议使用DateFormat解析方法(文档可以在这里找到(。它可以解析日期的字符串表示形式并返回java.util.Date。
JS Date --新日期((周三 8月 14 2019 14:54:38 GMT+0530 (印度标准时间(
爪哇日期 --new Date((.toISOString(("2019-08-14T09:25:50.136Z">
- 将Javascript日期转换为ASP.NET日期格式
- 如何将日期转换为周名
- 如何将日期转换为标准格式
- Javascript/Json日期转换问题
- 根据浏览器位置,用JavaScript将输入的日期转换为UTC
- 如何在 java 脚本中将字符串日期转换为 GMT
- Javascript中的日期转换
- JavaScript 将日期转换为格式
- 将正常日期转换为 unix 时间戳
- 时刻/时区 - 将日期转换为 unix
- 蒙戈将ISO日期转换为奇怪的字符串
- AngularJS希伯来文日期转换器
- JavaScript将人类可读的日期转换为unix时间戳,然后再转换回来
- php日期转换为javascript日期
- 将日期转换为可读性更强的格式
- 将数据库日期时间或日期转换为Javascript新日期(GMT)格式
- 如何在 Java 中将 JavaScript 日期转换为日期
- javascript中的日期转换和操作,带有阿拉伯月份
- 将javascript日期转换为julian日期
- 如何将日期选择器日期转换为JSON对象以用于AJAX请求