簡體   English   中英

為什么不將該字符串轉換為DateTime?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM