我将此字符串从客户端发送到web api函数:
date = "Sat, 27 Oct 2012 18:10:00 GMT"这个web函数获取字符串并解析它:
public HttpResponseMessage Get(DateTime date)
{
//some logic
}在web函数的调试模式中,我在解析后检查它的值,我看到如下:
{10/27/2012 8:10:00 PM}
我注定要得到的结果是:
{10/27/2012 18:10:00 PM}
知道它为什么分析错了吗?
发布于 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格式化程序自动处理)。DateTimeOffset或DateTime实例。发布于 2016-04-18 18:22:08
Sat, 27 Oct 2012 18:10:00 GMT日期采用协调世界时(UTC)格式。
在date变量中接收的值是相同的,但使用的是本地时区。
您可以使用date方法从ToUniversalTime()获得通用时间:
date.ToUniversalTime()https://stackoverflow.com/questions/36701369
复制相似问题