Angular 角度-将日期选择器转换为JS日期并发送到API-时区恐怖
Angular 角度-将日期选择器转换为JS日期并发送到API-时区恐怖,angular,typescript,date,timezone,dst,Angular,Typescript,Date,Timezone,Dst,Angular对于我们的组织来说是非常新的,我们的JavaScript在Web表单或ASP MVC页面上的范围是jQuery 我们的数据库和后端代码没有时区或DST的概念,因为我们只关心月份、日期和年份 尽管如此,当涉及到DST和时区时,使用不同的角度方法时,我遇到了一系列与日期不正确相关的错误。通常,当后端或Angular进行转换时,日期会减少1 起初,我以为我有了一个解决方案,.toLocaleDateString('en-us'),但这对我们的Safari来说是一个突破。然后,我想我们用格
Angular
对于我们的组织来说是非常新的,我们的JavaScript
在Web表单或ASP MVC
页面上的范围是jQuery
我们的数据库和后端代码没有时区或DST的概念,因为我们只关心月份、日期和年份
尽管如此,当涉及到DST和时区时,使用不同的角度方法时,我遇到了一系列与日期不正确相关的错误。通常,当后端或Angular进行转换时,日期会减少1
起初,我以为我有了一个解决方案,.toLocaleDateString('en-us')
,但这对我们的Safari来说是一个突破。然后,我想我们用格式日期(myDateVar,'MM/dd/yyyy','en-us','UTC)
解决了欧洲人的问题(日期减少了一个),但是去掉'UTC'
修复了这个问题
这是我能记得的最后几次尝试,但是当我们学习Typescript
和Angular
时,这种痛苦已经持续了好几个月了。目前,我最新的尝试是formattate(myDateVar,'MM/dd/yyyy,'en-us')
,它似乎正在工作
是否有更好的方法或更标准的方法来实现这一点,而不存在所有DST/时区问题?
我只想要他们输入的日期,别的什么都不要。似乎我们不能仅仅使用普通的JS date对象
将日期创建为UTC。有时我们的输入是文本,有时是日期。在我看来,如果需要,您应该只在后端进行转换。用户可以更改机器的TZ设置,最终会得到一些非常奇怪的结果。当您需要UTC中的当前日期/时间时,您通常可以相信服务器的TZ信息是最新的,而客户端则不是。如果发送的日期是未来或过去的,则不应使用时间,除非您需要时间,并允许用户明确输入时间,而不进行转换。Luxon DateTime在这一问题上确实帮助了我的组织: