[英]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.