.net日期时间到JavaScript日期
我有一个MVC5 Web应用程序作为我的时间记录应用程序的Web界面。 我的android应用程序将其时间作为字符串发送到服务器,在那个里我将其解析到.NETDateTime并将其存储在数据库中。 当我再次加载时间记录并创建一个JavaScript数组时,我额外增加了一个小时。 我已经尝试了很多,但这篇文章似乎解决了这个问题: 我的问题是: 这是正确的方法吗?我不需要任何文化或时区来记录时间。从上午6点开始到下午6点结束的时间记录始终具有此值。实际上它甚至必须有这个值! 难道没有办法告诉JavaScript日期它不应该占用我的时间吗?保持我设定的值 更新/扩展: 我的网络接口是一个MVC5应用程序,与android手机的通信是通过WCF服务完成的。 为了让上面发布的代码运行,我去掉了JavaScriptSerializer,并用StringBuilder编写了JSON数组。这让我有可能包括上面张贴的剪贴,并让它在客户机上执行。 我还尝试了所有DateTime.Kind(本地、未指定和UTC)与JavascriptSerializer的结合,但没有成功 同样,我需要客户端未修改的日期时间 根据Matt的回答,我现在看到三个选项:.net日期时间到JavaScript日期,javascript,asp.net-mvc,asp.net-mvc-5,Javascript,Asp.net Mvc,Asp.net Mvc 5,我有一个MVC5 Web应用程序作为我的时间记录应用程序的Web界面。 我的android应用程序将其时间作为字符串发送到服务器,在那个里我将其解析到.NETDateTime并将其存储在数据库中。 当我再次加载时间记录并创建一个JavaScript数组时,我额外增加了一个小时。 我已经尝试了很多,但这篇文章似乎解决了这个问题: 我的问题是: 这是正确的方法吗?我不需要任何文化或时区来记录时间。从上午6点开始到下午6点结束的时间记录始终具有此值。实际上它甚至必须有这个值! 难道没有办法告诉Jav
Stefan很难从这个问题中分辨出来,但在存储日期时,您需要使用协调世界时(UTC)——它只是让以后的工作更容易。Javascript日期都在本地时间工作,但如果服务器发送UTC时间,则可以轻松转换 因此,如果服务器发送您的日期值,如
“2014-03-09T21:25:05.937Z”
,则您可以使用以下方式在用户的本地时间获取该值:
var localDate = new Date(Date.parse("2014-03-09T21:25:05.937Z"))
这使localDate
的值为2014年3月10日星期一10:25:05 GMT+1300(新西兰夏时制)
(在我的时区内)
关键点是日期字符串末尾的“Z”。这将其标记为祖鲁时间/UTC。。。从那里,javascript就可以很好地为您转换
如果您使用的是WebAPI,那么即使存储了本地日期,以下内容也应该有助于使事情顺利进行:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;
我使用“DateTimeKind.Unspecified”,但我也尝试了其他两个选项。然后我退出了.NET JavascriptSerializer并手动编写JSON字符串,以便添加上面发布的JS代码。我不使用WebAPI,但我可以注册“JSON.SerializerSettings.DateTimeZoneHandling”“在启动时的Global.ascx中,对吗?我有一个针对android的WCF服务和一个针对webinterface的MVC5应用程序。因此,我们有三个选项。您推荐哪一个?
DateTimeKind。未指定的
只是意味着DataTime
对象在本地时间还是UTC时间不做任何假设。因此,请确保您知道我是否t是否真的是UTC-WCF服务接收到的日期…是UTC吗?如果不是,请将其转换。然后您将存储UTC日期,并按照答案中的正确路径。WCF端工作正常。如前所述,我将日期时间作为字符串从Android传输到Android,因此是DateTimeKind。未指定的似乎是正确的。更具体地说:当android发送数据时,我解析datetime字符串并使用这个构造函数:datetime(Int32,Int32,Int32,Int32,Int32,Int32),它隐式设置“DateTimeKind.Unspecified”。当我向android发送/接收DateTimes时,我使用这个自定义格式“5.2.2013/19:26”。但是,这里不涉及WCF。我有一个网站,允许用户登录pc并编辑之前从android同步的数据。对我来说,问题似乎很清楚。我使用隐式设置的DateTimeKind存储我的DateTime。未在数据库中指定。隐式是因为我使用此构造函数“DateTime(I,I,I,I,I)“要从年、月、日、小时、分钟和秒字段创建DateTime。现在我需要为我的JQuery插件创建一个JSON数组,它需要以JavaScript日期开始和结束,问题就从这里开始。由于JavaScript日期希望是本地的,所以我显示的数据不正确。示例:用户创建了一个从早上6点到早上7点的时间记录,并在WebIT上显示e相同的条目为上午6点+UTC偏移至上午7点+UTC偏移
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;