2013-04-15 76 views
9

我想將輸入字符串格式化爲MM/dd/yyyy hh:mm:ss C#格式。
輸入的字符串格式MM/dd/yyyy hh:mm:ss
例如:"04/30/2013 23:00"日期時間格式問題:字符串未被識別爲有效日期時間

我試過Convert.ToDateTime()功能,但它認爲4日期和3月爲這是不是我想要的。其實月是04,日期是03.

我也試過DateTime.ParseExact()函數,但是得到Exception。

我得到錯誤:

String was not recognized as a valid DateTime.

+2

你能後,你有麻煩了實際的源代碼? – tafa

+0

那麼你是如何嘗試'ParseExact'?我猜你錯過了格式通過簡單的猜測它會是'HH'而不是'hh',因爲你有24小時格式 – V4Vendetta

+0

你使用日期時間選擇器? –

回答

12

您的日期時間字符串沒有按」 t包含任何秒。您需要以您的格式反映這一點(刪除:ss)。
此外,您還需要指定H而不是h如果您使用24小時時間:

DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture) 

在這裏看到更多的信息:

Custom Date and Time Format Strings

+0

'str =「6」; dtm = DateTime.ParseExact(str,「d」,CultureInfo.InvariantCulture);'對我來說是失敗的。任何想法? – Si8

+0

@ Si8這是因爲「d」是標準格式字符串(短日期)。您可以改用「%d」。看到這裏:https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx#UsingSingleSpecifiers – Botz3000

+0

偉大的答案你救我的一天謝謝 –

3

試試這個:

string strTime = "04/30/2013 23:00"; 
DateTime dtTime; 
if(DateTime.TryParseExact(strTime, "MM/dd/yyyy HH:mm", 
    System.Globalization.CultureInfo.InvariantCulture, 
    System.Globalization.DateTimeStyles.None, out dtTime)) 
{ 
    Console.WriteLine(dtTime); 
} 
5

您可以使用DateTime.ParseExact()方法。

Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. The format of the string representation must match the specified format exactly.

DateTime date = DateTime.ParseExact("04/30/2013 23:00", 
            "MM/dd/yyyy HH:mm", 
            CultureInfo.InvariantCulture); 

這裏是一個DEMO

hh爲12小時時鐘從01到12,HH爲24小時時鐘從00到23

有關詳細信息,檢查Custom Date and Time Format Strings

+2

謝謝。它適用於我:) – Priya

+0

@Priya不客氣';)' –

0
DateTime dt1 = DateTime.ParseExact([YourDate], "dd-MM-yyyy HH:mm:ss", 
              CultureInfo.InvariantCulture); 

使用注意事項的HH (24小時制)而不是hh(12小時制),以及使用InvariantCulture,因爲有些文化使用分隔符而不是斜線。

例如,如果文化是de-DE,則格式「dd/MM/yyyy」將預期時間段作爲分隔符(31.01.2011)。

0

下面的代碼爲我工作:

string _stDate = Convert.ToDateTime(DateTime.Today.AddMonths(-12)).ToString("MM/dd/yyyy"); 
String format ="MM/dd/yyyy"; 
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true); 
DateTime _Startdate = DateTime.ParseExact(_stDate, format, culture); 
相關問題