2013-07-08 147 views
8

我想將DateTime轉換爲String將DateTime轉換爲字符串

檢查下面的代碼。

namespace TestDateConvertion 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      object value = new DateTime(2003,12,23,6,22,30); 
      DateTime result = (DateTime)value; 
      Console.WriteLine(result.ToString("dd/MM/yyyy")); 
      Console.ReadLine(); 
     } 
    } 
} 

我已將系統日期格式更改爲Faeroese。

和我得到的輸出作爲

23-12-2013

我應該如何得到輸出?

23/12/2013

而且認爲這另一種情況,假設 ,我有一個Customculture信息,我想轉換我約會WRT我的風俗文化, 我一直在這樣做之前如下,

string.Format(customCulture, "{0:G}", result); 

現在我應該怎麼得到datetime在字符串中使用customCulture,它不應該依賴於系統日期時間?

+0

試試這個http://stackoverflow.com/questions/6362088/c-sharp-date-formatting - 丟失 - 斜槓分隔符 – MEYWD

+0

Console.WriteLine(DateTime.Now.ToString(「ddd M/dd/yy」,CultureInfo.InvariantCulture)); Console.ReadLine();來自http://stackoverflow.com/questions/6362088/c-sharp-date-formatting-is-losing-slash-separators –

+5

'/'具有「用我的文化的日期分隔符取代我」的特殊含義。您可以通過傳遞'CultureInfo.InvariantCulture'作爲第二個參數來強制執行它。 –

回答

13

看起來像你的文化的日期分隔符爲-和蒂姆pointed/自身替換它。

您應該在result.ToString()方法中使用CultureInfo.InvariantCulture作爲第二個參數。

獲取CultureInfo對象與文化無關(不變)。

object value = new DateTime(2003, 12, 23, 6, 22, 30); 
DateTime result = (DateTime)value; 
Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); 

輸出將是;

23/12/2003 

這裏是一個DEMO

+2

酷我不知道[ideone](http://ideone.com/0ZU9Wg) – surfmuggle

+1

@SonerGönül,謝謝你介紹http://ideone.com/ – Satpal

+0

@threeFourOneSixOneThree和Satpal,歡迎你們。 Ideone是在Stackoverflow上發佈代碼示例的好工具。 –

3

試試這個

Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); 
+0

如果你的格式,所有說明符都是錯誤的。 'ddd'是爲例如縮寫名稱.. –

+0

@SonerGönül當然,我的不好,編輯:)謝謝! – wudzik

0

您可以使用不變的文化:

Console.WriteLine(
    result.ToString("dd/MM/yyyy", 
    System.Globalization.CultureInfo.InvariantCulture 
); 
0

嘗試

string.Format("{0:dd/MM/yyyy}",result) 

好運

1

您需要添加此

Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); 

現在你的代碼變得

object value = new DateTime(2003, 12, 23, 6, 22, 30); 
DateTime result = (DateTime)value; 
Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); 
Console.ReadLine(); 

備註 * 使用System.Globalization添加; *

0

我完全同意Tim Schmelter的評論和SonerGönül的回答。只是想補充說,當你使用日期時間格式時,你應該指定文化,因爲默認文化將從Thread.CurrentThread.CurrentCulture獲得(文化設置在Control Panel->Region and Languages->Format),這意味着使用不同的設置你的輸入將會不同。

拿上你的例子來看看不同的文化:

object value = new DateTime(2003, 12, 23, 6, 22, 30); 
DateTime result = (DateTime)value; 
foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures)) 
{ 
     Console.WriteLine(result.ToString("dd/MM/yyyy", culture));  
} 
0

「/」是一個特殊的字符,意思是「區域設置日期分隔符」。如果你想使用它像一個正常的字符,你可以使用加引號圖表引用它「\」 例如:

DateTime.Now.ToString(@"dd\/MM\/yyyy")