遇到日期时间字符串问题

时间:2014-03-12 14:43:08

标签: c# datetime

我有这种方法,它将返回星期几(星期三):

protected string GetDayOfWeek(string dateTimeString)
{
    DateTime result = DateTime.Parse(dateTimeString);
    string dayOfWeek = Enum.GetName(typeof(DayOfWeek), result.DayOfWeek);

    return dayOfWeek;    
}

我在行 DateTime结果上有一个断点来检查传入的字符串,它给出了:

  

“2014年3月12日星期三00:00:00 GMT”

上面的方法给了我错误:

  

“FormatException未由用户代码处理”字符串无法识别   作为有效的dateTime。

我做错了什么?我无法接受。

4 个答案:

答案 0 :(得分:4)

DateTime.Parse(string)使用当前文化的约定。所以我的猜测是"星期三,2014年3月12日00:00:00 GMT"不是您当前文化中的有效日期。

你可以尝试:

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

这应该告诉解析器是独立于文化的。

答案 1 :(得分:1)

尝试使用方法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);

答案 2 :(得分:1)

您可以使用:

DateTime.Now.DayOfWeek;

DayOfWeek类进行比较。

答案 3 :(得分:0)

这里有两件事:

  1. 将字符串解析为DateTime
  2. 从提供的DateTime获取DayOfWeek
  3. 正如Tor-Erik建议您可以使用DateTime.Parse和不变文化来获取DateTime。

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

    然后正如HevilávioSoares建议您应该使用DateTime对象的内置函数来获取星期几。

    DateTime.Now.DayOfWeek;
    

    最好将问题分开并重用现有功能,而不是编写自己的功能。