String.Format yyyy/MM/dd? 誤會大了
今天才發現一件誤很大的事...
Console.WriteLine(string.Format("{0:yyyy/MM/dd}", DateTime.Today));
結果應該是什麼? 不就是2009/04/01嗎?
答案是不一定,也有可能是2009-04-01哦!
根據本草綱目MSDN Library記載,日期格式裡的"/"代表的並不是斜線符號,而是DateTimeFormatInfo.DataSeparator。
Represents the date separator defined in the current DateTimeFormatInfo.DateSeparator property. This separator is used to differentiate years, months, and days.
表示目前 DateTimeFormatInfo.DateSeparator 屬性中所定義的日期分隔符號。此分隔符號可用來分隔年、月和日。
換句話說,如果日期格式被設定為yyyy-MM-dd,則DateTimeFormatInfo.DataSeparator = "-",此時string.Format("{0:yyyy/MM/dd}", DateTime.Today)就會變成2009-04-01,而不是想像中的2009/04/01。
要如何解決? 請愛用Escape字符"\",寫成以下的格式就OK了。
Console.WriteLine(string.Format("{0:yyyy\\/MM\\/dd}", DateTime.Today));