2015-07-03 255 views
3

我怎麼能轉換這個7/3/2015 12:40:02 PM爲DateTime與格式"dd/MM/yyyy hh:mm:ss tt"我已經這樣做了:字符串轉換爲日期時間DD/MM/YYYY HH:MM:SS TT

BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 

但我總是得到

字符串未被識別爲有效的DateTime。

enter code here

+2

注意,你可能是指'M/D',而不是'DD/MM',如果該日期是指今天是... –

+0

另外,如果小時可以由一個數字組成,你應該使用'h'而不是'hh'。 – Dzienny

+0

不,我想把這一天放在第一個地方,而不是一個月 –

回答

14

自月日能有一個單一的數字使用

BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "d/M/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 

The "M" Custom Format Specifier(示範,d的工作原理類似)

的 「M」 自定義格式說明代表該月份的數字從 1到12(或從1到13的c有13個月的alendars)。 一位數字的月份格式不帶前導零。

更新

由於時間也可以有,你必須使用一個單一的數字:

DateTime.ParseExact("7/3/2015 1:52:16 PM", "d/M/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);` 

...所以"d/M/yyyy h:mm:ss tt"代替"d/M/yyyy hh:mm:ss tt"。請注意,這同樣適用於分鐘和秒,如果他們也可以使用單個數字"d/M/yyyy h:m:s tt"。我希望你現在明白了。

+0

不,我想把這一天放在第一個地方,而不是一個月 –

+0

@MoezRebai:然後交換日和月。您在編輯您的問題之前,它是_「...與第一個元素是月」_。如果前7個月是使用我的代碼,如果今天是使用'「d/M/yyyy hh:mm:ss tt」'。 –

+0

當我交換M和D它handel的excption,因爲第一個是月 –

2

如果您的7/3/2015 12:40:02 PM是字符串,則需要使用單個數字格式說明符M specifierd specifier;

BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, 
            "M/d/yyyy hh:mm:ss tt", 
            CultureInfo.InvariantCulture); 
+1

不,我想把這一天放在第一位,而不是月 –

+0

@MoezRebai但你在你的問題中說,因爲; _with第一個元素_ **是月**。無論如何,只要切換'd'和'M'。 –

+0

我只想說,我有第一個7的日期是月份 –

0

這是在我的情況下,運作良好的代碼:

 Console.WriteLine("deal with regex datetime: "); 
     string input = "11/24 5:41:00 AM"; 
     DateTime newDate; 
     CultureInfo enUS = new CultureInfo("en-US"); 
     try 
     { 
      newDate = DateTime.ParseExact(input, "M/d h:mm:ss tt", CultureInfo.InvariantCulture); 
      Console.WriteLine("parse result: " + newDate); 
     } 
     catch (Exception err) 
     { 
      Console.WriteLine("error parsing input string. date format is wrong or string chaged " + err); 
     } 
相關問題