C# 在解析MS ASP.NET JSON日期时,如何将moment.js对象的日期设置为服务器日期?

C# 在解析MS ASP.NET JSON日期时,如何将moment.js对象的日期设置为服务器日期?,c#,asp.net,.net,datetime,momentjs,C#,Asp.net,.net,Datetime,Momentjs,注意:为了清晰起见,问题已更新 我有一个位于EST服务器上的应用程序。我正在使用一个带有EntityFramework6的MVC5应用程序来显示我的索引页面。我正在使用解析.NET JSON日期 服务器位于EST,用户都在EST上。但是,每当我使用下面的代码在jQuery数据表上呈现日期时,我都会得到日期加上12个小时。(即,如果在MS SQL Server上,DATETIME字段为“03/31/2015 00:00:00”,则将显示“03/31/2015 12:00:00”。) 最初,我问如何

注意:为了清晰起见,问题已更新

我有一个位于EST服务器上的应用程序。我正在使用一个带有EntityFramework6的MVC5应用程序来显示我的索引页面。我正在使用解析.NET JSON日期

服务器位于EST,用户都在EST上。但是,每当我使用下面的代码在jQuery数据表上呈现日期时,我都会得到日期加上12个小时。(即,如果在MS SQL Server上,DATETIME字段为“03/31/2015 00:00:00”,则将显示“03/31/2015 12:00:00”。)

最初,我问如何获取UTC偏移量,认为错误是因为它从UTC转换为本地时间并添加了差异。然而,东部标准时间仅为UTC的-5小时,而不是+12小时。我尝试过使用上面的代码更改moment.js中的区域,它只返回一个奇数。有些是“2015年3月31日04:00:00”,有些是“2015年3月31日05:00:00”

我现在不知道如何解决这个问题。我试着用简单的方法从日期中减去12个小时,但结果是“03/31/2015 04:00:00”,只减去了8个小时


关于如何正确解决这个问题,有什么想法吗?我这里缺少什么?

您可以使用
TimeSpan
类的
TotalHours
属性,该属性由
TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow)
返回,因此我相信我找到了问题的答案,它与时区没有任何关系


在我的代码中,我使用moment.js格式化消息日期,将其显示为
“MM/DD/YYYY hh:MM”
,因为我们只需要那么高的准确性,并且希望通过不显示秒和“AM:PM”来节省列上的空间。但是,我没有将其设置为使用军事时间。因此,它显示的是“12:00:00 AM”的“12:00”部分,而不是我认为的军事时间的12:00。这就是为什么即使我减去12小时,它仍然会显示12,当我减去适当的EST偏移量时,它会显示8:00PM或7:00PM(取决于DST)。

这行吗?我尝试过使用它,但它并没有被列为TimeZone类的已知方法。我引用的是文档中所说的系统。所以,我真的不确定。有些时区偏移不是小时数的整数:。
localOutput.Append(column.ColumnType == "DateTime" ? "\"render\": function( data, type, row ) { if (data) { return moment(data).zone(" + TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow) + ").format(\"MM/DD/YYYY" + (column.Name == "Date" ? " hh:mm" : (column.Name == "Timestamp" ? " hh:mm:ss" : "")) + "\"); } else { return null; }}, " : "");