首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的日期值在web函数中被不正确地解析?

为什么我的日期值在web函数中被不正确地解析?
EN

Stack Overflow用户
提问于 2016-04-18 18:12:53
回答 2查看 5.3K关注 0票数 2

我将此字符串从客户端发送到web api函数:

代码语言:javascript
复制
date = "Sat, 27 Oct 2012 18:10:00 GMT"

这个web函数获取字符串并解析它:

代码语言:javascript
复制
    public HttpResponseMessage Get(DateTime date)
    {
        //some logic
    }

在web函数的调试模式中,我在解析后检查它的值,我看到如下:

{10/27/2012 8:10:00 PM}

我注定要得到的结果是:

{10/27/2012 18:10:00 PM}

知道它为什么分析错了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-18 18:38:51

它与UTC时间的发送和日期转换为本地时间有关。为了避免这个错误和其他错误,您不应该以ISO 8601的任何其他格式从客户端发送日期时间。这确保您的客户端代码可以在任何地区重用。尤其是当涉及到浏览器和网站时,您几乎无法控制用户已经安装的区域设置。如果浏览器安装在西班牙语es-MX中,则日期的格式可以是日期,然后是月份,然后是年份,如果将其作为正常的日期时间发送,则不能正确地解析该格式。

ISO8601还保留发送到服务器时的时间偏移量。

当从JavaScript发送日期时,datetime对象包含一个名为.toISOString()的方法。在创建要发送到服务器的字符串时调用此命令。

然后,在web服务器上,您可以使用DateTime,然后使用.Kind = Utc,也可以使用DateTimeOffset。无论哪种方式,如果将日期/时间发送为符合ISO8601的字符串,则日期/时间将被正确地物化。

这也是在此之前回答

重述

  • 始终使用ISO-8601往返于客户端(客户端通常由Web中的JSON格式化程序自动处理)。
  • 始终在模型中直接使用DateTimeOffsetDateTime实例。
票数 3
EN

Stack Overflow用户

发布于 2016-04-18 18:22:08

Sat, 27 Oct 2012 18:10:00 GMT日期采用协调世界时(UTC)格式。

date变量中接收的值是相同的,但使用的是本地时区。

您可以使用date方法从ToUniversalTime()获得通用时间:

代码语言:javascript
复制
date.ToUniversalTime()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36701369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档