我已经为一些 DateTime 值苦苦挣扎了好几天。
我有一个 API 后端,它使用 Entity Framework 和带有 .netcore 的 sql server。
The big issue when i want to send a datetime from angular to c# backend. I noticed that Date() in typescript/javascript by default uses my timezone and i don't know how to exclude it.
例如,我的日期如下所示: 2019 年 7 月 11 日星期三 21:00:00 GMT+0300 当它到达 c# 时,它变成 07/10/2010(mm-dd-yyyy),由于时区,它减去 1 天。
有没有办法标准化日期变量以忽略时区并始终保持相同的格式 DD-MM-YYYY ?
我也尝试过使用 MomentJS,但仍然无法弄清楚,甚至我的 MomentJS 比较也由于他的问题而表现得很奇怪。
例如:
const VacationStart = moment(calendarEntity.Vacation.StartTime).utc(false);
const VacationEnd = moment(calendarEntity.Vacation.EndTime).utc(false);
if (VacationStart.isSameOrBefore(ColumnDate,'day') && VacationEnd.isSameOrAfter(ColumnDate,'day')) {
return '#FF0000';
}
在上面的例子中:
VacationStart is Wed Jul 10 2019 21:00:00 GMT+0300
VacationEnd is Wed Jul 17 2019 00:00:00 GMT+0300
ColumnDate is Thu Aug 15 2019 03:00:00 GMT+0300 (incremental value)
但由于某种原因,即使我使用 isSameOrBefore(ColumnDate,'day') 指定仅比较最多天,它仍然不起作用。当 VacationEnd 应等于 ColumnDate 时,返回 false。
注意:一切都在 foreach 循环中,其中 ColumnDate 增加 +1 天。
最佳答案
您只需使用 UTC 时间(格林威治标准时间)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC https://learn.microsoft.com/en-us/dotnet/api/system.datetime.utcnow?view=netcore-2.2
所以像这样:
- new Date(new Date().toUTCString()); --“2019 年 7 月 1 日星期一 17:55:41 GMT-0700(太平洋夏令时间)”
- new Date().toUTCString(); --“2019 年 7 月 2 日星期二 00:56:38 GMT”
- new Date().toString(); --“2019 年 7 月 1 日星期一 17:57:03 GMT-0700(太平洋夏令时间)”
关于javascript - 从后端到前端的日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56838557/