从后端到前端的DateTime值

时间:2019-07-01 15:43:05

标签: javascript c# angular typescript momentjs

我一直在努力寻找一些DateTime值。

我有一个API后端,该后端使用带有.netcore的实体框架和sql服务器。

  

我想将日期时间从angular发送到c#时遇到的大问题   后端。我注意到默认情况下Typescript / javascript中的Date()   使用我的时区,我不知道如何排除它。

例如,我的约会如下: 2019年7月11日星期三21:00:00 GMT + 0300 而到达c#时变为2010年10月10日(mm-dd-yyyyy),则由于时区而减去1天。

是否有一种方法可以标准化Date变量以忽略时区并始终保持相同的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于2019年7月10日星期三21:00:00 GMT + 0300

     

假期结束于2019年7月17日星期三00:00:00 GMT + 0300

     

ColumnDate是2019年8月15日星期四03:00 GMT + 0300(增量值)

尽管出于某种原因,即使我使用isSameOrBefore(ColumnDate,'day')来指定最多只能比较几天,它仍然无法正常工作。如果VacationEnd应该等于ColumnDate,则返回false。

注意:一切都在foreach循环中,其中ColumnDate增加+1天。

1 个答案:

答案 0 :(得分:1)

您只需要使用UTC时间(格林威治标准时间)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC https://docs.microsoft.com/en-us/dotnet/api/system.datetime.utcnow?view=netcore-2.2

是这样的:

  • 新日期(新Date()。toUTCString()); -“ Mon Jul 01 2019 17:55:41 GMT-0700(Pacific Daylight Time)”
  • new Date()。toUTCString(); -“星期二,2019年7月2日00:56:38 GMT”
  • new Date()。toString(); -“星期一2019年7月1日17:57:03 GMT-0700(太平洋夏令时间)”