2017-06-29 64 views
2

我需要格式DateTimeOffset與Windows區域設置相同的方式。 這裏是我做過什麼至今:組合日期和時間DateTimeOffset

var strDate = string.Format("{0} {1}", 
        myDateTimeOffset.ToLocalTime().ToString(CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern), 
        myDateTimeOffset.ToLocalTime().ToString(CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern)); 

有一個較短的方式這樣做?

回答

2

更短:

var strDate = string.Format("{0:d} {0:T}", myDateTimeOffset.ToLocalTime()); 
+0

好點!忘了這樣做。 –

1

如果選中了「Standard Date and Time Format Strings」你可以看到你做"d""T"

var strDate = string.Format("{0} {1}", 
        myDateTimeOffset.ToLocalTime().ToString("d"), 
        myDateTimeOffset.ToLocalTime().ToString("T")); 

使用這兩個字符串將返回特定文化的短日期和長時間格式值獲得同樣的效果。

+0

你的意思是'D'和'T'。 'ToLocalTime()'確保抓住'currentCulture'? – Mhd

+2

'.ToLocalTime()'返回一個'DateTime'對象,該對象根本沒有與之相關的文化。抓住文化的東西是['ToString(string)'function](http://referencesource.microsoft.com/#mscorlib/system/datetime.cs5088b43558351160),該函數將使用'DateTimeFormatInfo.CurrentInfo'內部使用'Thread.CurrentThread.CurrentCulture'(['CultureInfo.CurrentCulture'也返回'Thread.CurrentThread.CurrentCulture']的值(http://referencesource.microsoft.com/#mscorlib/system/globalization/cultureinfo.cs ,1f5907384ac6bb55)) –