java - java和angularjs之间的错误日期值

标签 java angularjs date

我创建了一个休息服务来返回日期。

我在后端使用 Java,在前端使用 AngularJS。

我的java代码是这样的:

   SimpleDateFormat myFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   Date myDate = myFormat.parse("1900-01-01 12:00:00");
   return myDate;

当我从服务中获取此值时,我使用以下代码将其显示在前端:

 <div>
    <h4>{{myDate | date:'yyyy-MM-dd HH:mm:ss'}}</h4>
 </div>

页面显示“1899-12-31 23:56:16”。

我再次尝试,但使用当前日期,它在系统中正常显示。

最佳答案

我已经测试了从 1900 年到 2020 年的所有 1 月 1 日日期,事实上,Java 和 javascript 显然在某些时间间隔内返回不同的毫秒值(事实上,只有 1912 年至 1912 年之间的日期) 1940 年重合)。

我已经根据经验测试了这种随机差异是由于在 Java 中解析日期字符串时缺少特定时区造成的(在 javascript 部分,使用的引用隐式是 UTC,我猜)。此外,在解析日期时指定时区始终是一个好习惯。

因此,我建议您在 java 程序中添加 UTC(或 GMT+0000)的时区说明符:

    SimpleDateFormat myFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
    Date myDate=myFormat.parse("1900-01-01 12:00:00 +0000");

我坚持认为,根据我的猜测,AngularJS scriptlet 引用的是 UTC,无论客户端实际位于哪个时区。

关于java - java和angularjs之间的错误日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39129400/

相关文章:

php - 显示一系列天数

java - 不同类型的运行时异常处理

node.js - Nodejs 和 Angularjs,清理 url

javascript - 如何在 AngularJS 中比较两个日期?

javascript - AngularJS UI Bootstrap 模式无法执行范围内的功能

javascript - 创建可重用方法的问题

java - 解析日期的正确方法

java - 在卡片布局中定位组件

java - 如何使用构建类或 war 文件将我的 Spring MVC Web 应用程序部署到 Apache tomat 目录中?

java - 从 docx4j 版本 2.X 迁移到 3.X