2012-10-29 30 views
1

我有C#代碼,執行以下操作:爲什麼在使用當前時間格式化DateTime時會得到2555年?

DateTime now = DateTime.UtcNow; 
string timeToOutput = now.ToString(); 
String pathInStorage = now.ToString("yyyy-MM-dd/HH/"); 

CloudBlobClient client = getClient(); 
CloudBlobContainer container = client.GetContainerReference(hardcodedContainerName); 
container.GetBlobReference(pathInStorage).UploadText(timeToOutput); 

正如你看到的,我首先獲得當前時間,然後使用不同的格式字符串兩次格式化。現在大多數時候存儲器中的路徑將與輸出到blob本身的時間相匹配。

然而,有時(非常少)的時間將在2012年(如2012年10月29日12:33:00),但該路徑將包含2555年的時間,並且每小時的日期與當時的時間相匹配在blob內(如2555-10-29-12)。

這怎麼會發生?

+0

什麼是'now'變量的確切價值? –

回答

6

2555年是2012年Thai Solar Calendar。不知道你爲什麼得到這個,也許執行代碼的服務器有泰語語言環境?

要使代碼按預期運行,請使用ToString()的不同的,區域感知版本。見DateTime.ToString()

0

你能通過不變的文化嗎?

喜歡的東西:

DateTime now = DateTime.UtcNow; 
string timeToOutput = now.ToString(); 
CultureInfo InvC = new CultureInfo(""); 
String pathInStorage = now.ToString("yyyy-MM-dd/HH/", InvC); 
//rest of your logic 
相關問題