Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net日期时间到JavaScript日期_Javascript_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

.net日期时间到JavaScript日期

.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

我有一个MVC5 Web应用程序作为我的时间记录应用程序的Web界面。 我的android应用程序将其时间作为字符串发送到服务器,在那个里我将其解析到.NETDateTime并将其存储在数据库中。 当我再次加载时间记录并创建一个JavaScript数组时,我额外增加了一个小时。 我已经尝试了很多,但这篇文章似乎解决了这个问题:

我的问题是: 这是正确的方法吗?我不需要任何文化或时区来记录时间。从上午6点开始到下午6点结束的时间记录始终具有此值。实际上它甚至必须有这个值! 难道没有办法告诉JavaScript日期它不应该占用我的时间吗?保持我设定的值

更新/扩展: 我的网络接口是一个MVC5应用程序,与android手机的通信是通过WCF服务完成的。 为了让上面发布的代码运行,我去掉了JavaScriptSerializer,并用StringBuilder编写了JSON数组。这让我有可能包括上面张贴的剪贴,并让它在客户机上执行。 我还尝试了所有DateTime.Kind(本地、未指定和UTC)与JavascriptSerializer的结合,但没有成功

同样,我需要客户端未修改的日期时间

根据Matt的回答,我现在看到三个选项:

  • 我的代码贴在上面
  • 解析日期时间并为GMT追加Z
  • 在Global.ascx应用程序中添加SerializerSettings.DateTimeZoneHandling
  • 干杯,
    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;