日期时间字符串有问题

本文关键字:有问题 字符串 时间 日期 | 更新日期: 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);

这里有两件事:

  1. 将字符串解析为日期时间
  2. 从提供的DateTime中获取DayOfWeek

Tor-Erik建议你可以使用DateTime。使用不变区域性进行解析以获取DateTime。

DateTime.Parse(
    dateTimeString,
    System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat)

那么,正如Hevilávio Soares建议的那样,您应该使用DateTime对象的内置函数来获取星期几。

DateTime.Now.DayOfWeek;

最好分离关注点并重用现有功能,而不是自己编写。