使用angular2中的日期

时间:2017-10-27 20:06:11

标签: java angular datetimepicker ng2-bootstrap

我有一个应用程序,用户可以输入一些日期。

经过一番研究后,我决定使用mydatepicker v2.0.31

问题在于,当我在前端选择日期并将其发送到后端时,作为后端应用程序(java应用程序)与普通用户处于不同的时区,它会更改前一天的日期。 / p>

我尝试了几件事......我现在正在做的是将角度应用中的日期转换为格式为yyyy-mm-dd的字符串,然后再将其发送到后端,然后是结果(在后端进程之后)日期是少一天..因为我在ART和EST的后端...有没有选择我可以发送日期而不假设时区?

1 个答案:

答案 0 :(得分:0)

恕我直言,处理客户端和服务器之间日期的唯一理智方法是明确说明时区。为此构建了ISO-8601时间格式。

再次,恕我直言,唯一明智的做法是始终使用指定UTC的日期/时间。

当您这样做时,时区被指定为' Z' (对于'祖鲁'时间,UTC的军事术语),如:"2017-11-05T20:41:06+00:00",这篇文章的大致时间,对我来说是2017年11月5日美国东部时间2017年3月5日下午3点41分, EST比UTC晚5个小时。

请注意,在JavaScript(或Typescript)中,Date对象具有toISOString()方法,该方法将生成符合ISO-8601的日期字符串,JSON.stringify()也是如此。因此,如果您通过Angular的HTTPClient将一个对象从Angular发送到您的后端,该对象中的日期应自动以ISO-8601格式发送。

如果您要先转换为字符串,请不要这样做。将它们保留为Dates,当您通过HttpClient将对象发送到后端时,让JSON.stringify()转换它们。