[英]new DateTime throws exception in IE 11 but not Chrome
我在后面的代码中有以下几行:
DateTime dt = new DateTime(Convert.ToInt32(year), Convert.ToInt32(month), Convert.ToInt32(day), 0, 0, 0, DateTimeKind.Utc);
其中year =“ 2013” month =“ 11” day =“ 11”
当我在IE中调试它时,它抛出System.FormatException:输入字符串的格式不正确。 在Chrome中正常运行。
我在这里想念什么?
更新:
好吧,我机智了。 我创建了一个新的Web窗体项目,并将以下方法添加到了后面的代码中。 我在Page_Load事件中使用以下字符串“ 11/11/2013 00:00:00”来调用它,并在“ int month = Convert”行引发System.FormatException。 ToInt32(monthString.Trim());“ monthString的值为“ 11”。 这仅在IE11中发生,并且在Chrome和IE10中运行良好。
private DateTime getDateTimeFromTimeArgument(string argument)
{
string[] argumentArray = argument.Split(' ');
string[] valuesArray = argumentArray[0].Split('/');
string yearString = valuesArray[2];
string monthString = valuesArray[1];
string dayString = valuesArray[0];
int month = Convert.ToInt32(monthString.Trim());
int day = Convert.ToInt32(dayString.Trim());
int year = Convert.ToInt32(yearString.Trim());
DateTime dte = new DateTime(year, month, day);
return dte;
}
我遇到了类似的问题,我注意到的一件事是,当您尝试将日期字符串解析为字符数组时,IE11中似乎有一些(隐藏的)Unicode 8206字符,但Chrome却没有。 就我而言,我是从telerik RadDatePicker控件中获取日期客户端的,并将其传递到另一个页面。 希望这可以帮助。
我知道这已经两年了,但答案是IE(由于某种原因)那里有一堆隐藏的无效字符,因此您必须使用类似以下的方法来解析它们:
valToUse = new string(val.Where(c => char.IsNumber(c) || c == '/').ToArray());
尝试通过以下方式重写代码:
Trace.WriteLine("Year + " + year);
var yearValue = Convert.ToInt32(year);
Trace.WriteLine("Month + " + month);
var monthValue = Convert.ToInt32(month);
Trace.WriteLine("Day + " + day);
var dayValue = Convert.ToInt32(day);
DateTime dt = new DateTime(yearValue, monthValue, dayValue, 0, 0, 0, DateTimeKind.Utc);
并查看输出窗口和异常
IE11在编码日期方面做得有些奇怪。
尝试使用
date.toJSON()
在浏览器上
所以你的查询字符串看起来像
?dateArg=2013-12-14T20:37:03.121Z
在服务器上,您可以像这样使用日期
DateTime date = DateTime.Parse(dateArg); //will parse the json into a C# object
var day = date.Day; //get day
var year = date.Year; //get year
var month = date.Month; //get month
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.