[英]Why won't this string be converted to DateTime?
2/22/2012 3:30:00
肯定是可以通过Convert.ToDateTime()转换为DateTime的可接受格式吗?
我个人将避免使用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小时制会包含am / pm指示符。
1好吧,我更喜欢使用Noda Time ,但这是另一回事...
肯定是可以通过Convert.ToDateTime()转换为DateTime的可接受格式吗?
当然不是。 在某些语言环境中确实如此,但是例如我有一个fr-FR
语言环境,这是一个无效的日期。 一年中没有22个月。 确保在解析日期时指定格式。 您可以为此使用TryParseExact方法。
如果您以整数形式分别获得有关Year,Month等的信息,我宁愿使用DateTime的构造方法。
DateTime myDateTime = new DateTime(year, month, day, hour, minute, second);
通常,这没有什么错...
如果您提供一个指定区域性的IFormatProvider,则应该能够(例如,在这种情况下为en-US)。
var date = Convert.ToDateTime("2/22/2012 3:30:00", CultureInfo.GetCultureInfo("en-US"));
这是有关如何使用Convert.ToDateTime()的示例,它将帮助您理解它:
Convert.ToDateTime示例
或者您可以按照以下示例尝试:
将字符串转换为DateTime
这对我来说很好:
DateTime dt = Convert.ToDateTime("2/22/2012 3:30:00");
Console.WriteLine(dt.ToShortDateString());
Console.WriteLine(dt.ToShortTimeString());
我当然不会像达林建议的那样关注本地化
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.