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在这一问题上确实帮助了我的组织: