【发布时间】:2018-06-05 15:11:05
【问题描述】:
您好,我的 MVC 控制器 Get 方法中的日期时间格式面临的问题。 从 Firefox、Chrome、Internet Explorer 发送请求时,它工作正常, 但它在请求来自 Microsoft Edge 浏览器时抛出异常 :(
异常:字符串未被识别为有效的日期时间。
示例代码在这里 -
public JsonResult GetFYDetailsForDate(string date)
{
//input date = "6/13/2018"
DateTimeStyles dateTimeStyles = DateTimeStyles.AssumeLocal;
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
var culturedDate1 = DateTime.ParseExact(date, "M/d/yyyy", new System.Globalization.CultureInfo("en-US"));
var culturedDate = DateTime.Parse(date, culture, dateTimeStyles);
}
如果请求来自 Chrome、Firefox 和 Internet Explorer,则输入日期为“6/13/2018”,解析日期输出为“6/13/2018 12:00:00 AM”。
** 为了解决这个问题,我们可以从日期字符串中提取日期、月份和年份,但我不想这样做。只想知道有什么问题 请求来自 Microsoft Edge 浏览器。
【问题讨论】:
-
您确定来自 Edge 的输入是预期的吗?不像
6 13 2018? -
当你在这个代码点使用断点进行调试时,日期字符串值是多少?
-
@Nekeniehl,是的,代码中注释的输入“6/13/2018”是从来自 Edge 的请求中复制的。
-
尝试做
DateTime.ParseExact(date, "M/d/yyyy", CultureInfo.InvariantCulture);我不在电脑前,不能自己做 -
寻找任何可能与有效负载一起出现的额外字符。例如,当您的断点被命中时,在立即窗口中,将
date.Length与您认为应该是的比较(在"6/20/2018"的示例中,我希望它是9)。如果它更大,您可能需要在解析之前对字符串使用date.Trim()或其他一些清理。
标签: c# asp.net asp.net-mvc datetime microsoft-edge