2017-06-29 67 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)) –