2010-10-05 89 views
1

我有以下代碼。另一個DateTime.ParseExact問題

using System; 
using System.Globalization; 

    class testCompile 
    { 
     static void Main(string[] args) 
     { 
      CultureInfo provider = CultureInfo.InvariantCulture; 
      string format = "mm/d/yyyy"; 
      string strInput = "11/5/2010"; 
      string strOutput = DateTime.ParseExact(strInput, format, provider).ToString(); 
      Console.WriteLine("string Looks Like : {0}", strOutput); 
     } 
    } 

1)如果我嘗試將格式設置爲「MM/DD/YYYY」,上面的代碼在運行時引發錯誤。

2)上述代碼的輸出爲2010年1月5日上午12點11分。

上午12:00:00從哪裏來?

蓋伊福克斯日更改爲1月5日?

有人能解釋一下是怎麼回事?

+0

如果您打算使用ParseExact,請務必正確設置Try/Catch塊。或者,您也可以使用TryParse/TryParseExact。 – Crag 2010-10-05 17:53:05

+0

感謝大家的貢獻。我改變了我的代碼,使它看起來像這樣。 ** static void Main(string [] args) { CultureInfo provider = CultureInfo.InvariantCulture; string format =「M/d/yyyy」; string strInput =「11/15/2010」; string strOutput = DateTime.ParseExact(strInput,format,provider).ToShortDateString(); Console.WriteLine(「字符串看起來像:{0}」,strOutput); } – abhi 2010-10-05 17:54:43

+1

@Crag, 感謝您的評論。我有我的原始代碼。這僅僅是爲了說明我的問題而創建的示例。 – abhi 2010-10-05 18:00:47

回答

4

1)由於您沒有指定時間,因此它使用默認值12:00:00 AM。

2)您需要使用「MM」來指定格式字符串中的月份,而不是「mm」(分鐘)。請參閱Custom Date and Time Format Strings瞭解您可以處理的所有細節。

+1

string format =「M/d/yyyy」;將適用於所有情況。 – abhi 2010-10-05 17:53:26

4

mm表示分鐘; MM意味着幾個月。