繁体   English   中英

DateTime.TryParse无法按预期工作

[英]DateTime.TryParse not working as expected

我想用这个日期字符串09 Apr 2015: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格式。 我究竟做错了什么?

你应该这样做:

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 ; 在这里我假设你有一个英文格式的日期。

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

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

此外,您应该检查调用的结果,因为TryParseTryParseExact返回true / false

您可以使用TryParseExact方法:

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

提示:

  • 如果你使用MMM ,月份将被视为3字母格式(如4月
  • 如果你使用HH而不是hh它意味着小时部分是24小时格式,它将不会失败解析15小时

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM