DateTime.TryParse无法按预期工作

时间:2015-05-18 15:24:33

标签: c# datetime tryparse

我正在尝试将此日期字符串 2015年4月9日:15:16:17 以此格式显示 09/04/2015 15:16:17 。这就是我的尝试。

    DateTime dtDateTime = new DateTime();

    string dateString = "09 Apr 2015: 15:16:17";
    DateTime dateValue;
    DateTime.TryParse(dateString, out dateValue);
    dtDateTime = dateValue;

这是输出 01/01/0001 00:00:00

我认为TryParse会将dateString值转换为所需的DateTime格式。我做错了什么?

3 个答案:

答案 0 :(得分:3)

你应该这样做:

DateTime dtDateTime = new DateTime();

string dateString = "09 Apr 2015: 15:16:17";
DateTime dateValue;
if (DateTime.TryParseExact(dateString, @"dd MMM yyyy':' HH':'mm':'ss", 
       new CultureInfo("en-us"), DateTimeStyles.None, out dateValue))
    dtDateTime = dateValue;

使用TryParseExact,您可以提供自定义日期格式字符串以匹配您的输入日期。在上面的示例中,我在年后添加了额外的:

此外,您必须使用可以了解您的月份名称的CultureInfo;在这里我假设你有一个英文格式的日期。

答案 1 :(得分:0)

您需要指定格式,因为它不是标准的日期格式字符串:

DateTime.TryParseExact(
    dateString,
    "dd MMM yyyy: HH:mm:ss",
    CultureInfo.CurrentCulture,
    DateTimeStyles.None,
    out dateValue);

此外,您应该检查自TryParseTryParseExact返回true / false

以来的通话结果

答案 2 :(得分:0)

您可以使用TryParseExact方法:

DateTime.TryParseExact(dateString, "dd MMM yyyy: HH:mm:ss", 
                       System.Globalization.CultureInfo.InvariantCulture,
                       System.Globalization.DateTimeStyles.AllowWhiteSpaces, 
                       out dtDateTime);

提示:

  • 如果您使用 MMM ,则该月份将被视为3字母格式(如 Apr
  • 如果您使用 HH 而非 hh ,则表示小时部分为24小时格式,解析15小时不会失败