[英].net DateTime to JavaScript Date
我有一个MVC5 Web应用程序作为我的时间记录应用程序的Web界面。 我的Android应用将其时间作为字符串发送到服务器,在那里我将其解析为.NET DateTime并将其存储在数据库中。 当我再次加载时间记录并创建一个JavaScript数组时,我又增加了一个小时。 我已经尝试了很多,但是这篇文章似乎解决了这个问题: stackoverflow
new Date(date.valueOf() + date.getTimezoneOffset() * 60000);
我的问题是:这是正确的方法吗? 我不需要任何文化或时区来记录时间。 从上午6点开始到下午6点结束的时间记录始终具有此值。 实际上,它甚至必须具有此值! 难道没有办法告诉JavaScript Date它不执行我的时间吗? 只保留我设置的值吗?
更新/扩展:我的网络界面是MVC5应用程序,与Android手机的通信是通过WCF服务完成的。 为了使我上面发布的代码运行,我踢出了JavaScriptSerializer并使用StringBuilder编写了JSON数组。 这使我可以包括上面发布的片段,并使其在客户端上执行。 我还尝试将所有DateTime.Kind(本地,未指定和UTC)与JavascriptSerializer结合使用,但均未成功。
同样,我需要在客户端修改日期时间。
有了Matt的答案,我现在看到三个选择:
干杯,斯特凡
这个问题很难说清楚,但是在存储日期时,您需要使用协调世界时(UTC),这使以后的工作变得更容易。 Javascript将所有工作日期定为本地时间,但是如果服务器发送的是UTC时间,则可以轻松进行转换。
因此,如果服务器发送(例如,以JSON "2014-03-09T21:25:05.937Z"
)您的日期值,例如"2014-03-09T21:25:05.937Z"
,则可以使用以下命令在用户的本地时间获取它:
var localDate = new Date(Date.parse("2014-03-09T21:25:05.937Z"))
这使localDate
的值为Mon Mar 10 2014 10:25:05 GMT+1300 (New Zealand Daylight Time)
(在我的时区中)。
关键位是日期字符串末尾的“ Z”。 这会将其标记为Zulu-time / UTC ...从那里开始,javascript可以为您转换。
如果您使用的是WebAPI,则即使存储了本地日期,以下内容也可以帮助解决问题:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.