JavaScript日期转换为错误的Java日期
JavaScript Date converting to the wrong Java Date
我有一个JavaScript Date对象Thu Jul 02 2015 00:00:00 GMT-0400 (Eastern Standard Time)
,它被传递给一个Java方法,该方法将该日期存储在Java Date对象中。但是Java日期对象将这个日期显示为Wed Jul 01 23:00:00 CDT 2015
。我怎样才能得到从JavaScript日期到Java日期的正确转换?
注意:这只发生在我的电脑设置为东部标准时间,时钟设置为上午9点左右。除此之外,如果我把我的电脑的时区设置回中央标准时间,那么这就不再是一个问题了。
从epoch到07/02/15的毫秒数为1435809600000。如果我用这些毫秒并创建一个JS Date对象,如new Date(1435809600000)
,我得到这个:Thu Jul 02 2015 00:00:00 GMT-0400(东部标准时间)。但是,当我尝试创建一个Java日期对象,new Date(1435809600000)
,我得到:Wed Jul 01 23:00:00 CDT 2015
最好的解决方案是发送长的数据(从1/1/1970开始的毫秒),并从它开始在java中构造一个新的Date。
Javascript代码var date = ... // date is of type Date
var dateMillis = date.getTime(); // Milliseconds long representing the date
Java代码long dateMillis = .... // Milliseconds long representing the date
Date date = new Date(dateMillis);
问题绝对是客户端的Local TZ。也许这篇文章可以帮助,通过删除本地化从你的DateTime对象。如何忽略用户的时区和强制日期()使用特定的时区
Try with:
String fromJavascript = "Thu Jul 02 2015 00:00:00 GMT-0400";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'Z", Locale.US);
try {
Date converted = sdf.parse(fromJavascript);
System.out.println(converted);
} catch (ParseException e) {
e.printStackTrace();
}
转换后的对象应该包含正确的日期。打印的内容将取决于正在运行的客户机的TZ。但是你可以在展示的时候控制。
- 在java脚本中选择的随机日期上添加一年
- 如何在 java 脚本中将字符串日期转换为 GMT
- JavaScript 和 Java 中的日期格式
- Java 脚本 设置日期的最小值和最大值属性
- 如何在 Java 中将 JavaScript 日期转换为日期
- 获取系统的时区名称(IST,PST,DST)'IE中java脚本中的s日期
- Java/JavaScript日期:这是真的吗
- 在 Java 脚本中向日期添加变量编号
- Highchart:从 java 传递系列映射时绘制日期时间图表问题
- Java 在 Java 中转换毫秒日期对应的时区日期
- 如何比较从 JSP 捕获的 java 脚本中的 2 个日期
- 如何从 Java 日期选取器在 asp.net 文本框中显示输入文本类型的数据
- 对格式化日期的 java 脚本数组进行排序
- java脚本日期对象中的UK日期问题
- 旧日期的时间戳偏差Java与Javascript(3600秒)
- java脚本中的Regex日期模式yyyy-mm-dd javascript
- 使用java脚本从事务日期填充html中的到期日期
- 在java脚本的帮助下,在日历中显示背景日期应该是红色的,我也从oracle数据库中获取数据
- 通过使用php/html中的java脚本,在另一个输入日期字段中添加天数来填充日期
- 两个连续的java脚本日期选择器函数