为什么不将此字符串转换为DateTime?

时间:2012-03-07 15:48:52

标签: c# string datetime

2/22/2012 3:30:00

当然,这是一种可以使用Convert.ToDateTime()转换为DateTime的格式吗?

6 个答案:

答案 0 :(得分:9)

我个人会避免使用Convert.ToDateTime。我通常更喜欢 1 来使用DateTime.TryParseExact,指定您期望的文化和格式字符串 - 假设您具有预期的格式,当然。如果你不这样做,你必须问自己更大的问题。

例如:

DateTime value;
if (DateTime.TryParseExact(text, "M/d/yyyy H:mm:ss",
                           CultureInfo.InvariantCulture,
                           DateTimeStyles.None,
                           out value))
{
    Console.WriteLine("Parsed to {0}", value);
}
else
{
    Console.WriteLine("Failed to parse");
}

这是一个稍微奇怪的格式开始 - 通常24小时格式包括一小时的前导0,而12小时格式将包括上午/下午指示符。


1 好吧,我更喜欢使用Noda Time,但这是另一回事......

答案 1 :(得分:4)

  

当然,这是一种可以使用Convert.ToDateTime()转换为DateTime的格式吗?

当然不是。对某些区域设置来说也是如此,例如我有一个fr-FR区域设置,这是一个无效的日期。一年中没有22个月。确保在解析日期时指定格式。您可以使用TryParseExact方法。

答案 2 :(得分:1)

如果您将有关年份,月份等的信息分别作为整数获取,我宁愿使用DateTime的构造函数。

DateTime myDateTime  = new DateTime(year, month, day, hour, minute, second);

通常没有什么可以出错...

答案 3 :(得分:0)

如果您提供指定文化的IFormatProvider(例如,在这种情况下为en-US),它应该能够。

var date = Convert.ToDateTime("2/22/2012 3:30:00", CultureInfo.GetCultureInfo("en-US"));

答案 4 :(得分:0)

以下是如何使用Convert.ToDateTime()的示例,它将帮助您理解它:
Convert.ToDateTime example

或者您可以尝试以下示例:
Convert String to DateTime

答案 5 :(得分:0)

这对我来说很好用:

            DateTime dt = Convert.ToDateTime("2/22/2012 3:30:00");
        Console.WriteLine(dt.ToShortDateString());
        Console.WriteLine(dt.ToShortTimeString());

当然,我并没有像Darin所说的那样关注本地化