日期时间字符串有问题
本文关键字:有问题 字符串 时间 日期 | 更新日期: 2023-09-27 17:49:39
我有这样一个方法,它将返回星期几(星期三):
protected string GetDayOfWeek(string dateTimeString)
{
DateTime result = DateTime.Parse(dateTimeString);
string dayOfWeek = Enum.GetName(typeof(DayOfWeek), result.DayOfWeek);
return dayOfWeek;
}
我在DateTime结果行上有一个断点来检查传入的字符串,它给出:
"Wed, 12 Mar 2014 00:00:00 GMT"
上面的方法给我错误:
"FormatException未被用户代码处理"字符串未被识别作为有效的日期时间。
我做错了什么?我接不起来
DateTime.Parse(string)使用当前区域性的约定。所以我的猜测是"Wed, 12 Mar 2014 00:00:00 GMT"在你当前的文化中不是一个有效的日期。
你可以试试:
DateTime.Parse(dateTimeString, System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat)
这应该告诉解析器是文化无关的。
您可以使用:
DateTime.Now.DayOfWeek;
与DayOfWeek
类比较
尝试使用DateTime.ParseExact
方法并为您的输入提供一个精确的格式字符串。在你的例子中,调用应该是这样的:
DateTime myDate = DateTime.ParseExact("Wed, 12 Mar 2014 00:00:00 GMT", "ddd, dd MMM yyyy HH:mm:ss 'GMT'K", System.Globalization.CultureInfo.InvariantCulture);
这里有两件事:
- 将字符串解析为日期时间
- 从提供的DateTime中获取DayOfWeek
Tor-Erik建议你可以使用DateTime。使用不变区域性进行解析以获取DateTime。
DateTime.Parse(
dateTimeString,
System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat)
那么,正如Hevilávio Soares建议的那样,您应该使用DateTime对象的内置函数来获取星期几。
DateTime.Now.DayOfWeek;
最好分离关注点并重用现有功能,而不是自己编写。