[英]Changing format of String.Format parameters at run time
我以前的舊LINQ代碼有這樣的東西:
DateOfBirth = string.Format("{0:MM/dd/yyyy}", myTable.DateOfBirth),
但是現在我希望能夠格式化用戶如何從Windows更改其日期模式,因此我將其更改為這樣並且它可以工作:
string regionShortDate = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
string temp = "{0:" + regionShortDate + "}";
DateOfBirth = string.Format(temp, myTable.DateOfBirth),
所以請注意我必須使用字符串連接來構建我的字符串格式化程序? 我認為應該采用更專業的方式來做到這一點。 你有什么建議?
使用DateTime.ToShortDateString方法
DateOfBirth = myTable.DateOfBirth.ToShortDateString();
ToShortDateString方法返回的字符串對文化敏感。 它反映了當前文化的DateTimeFormatInfo對象定義的模式。 例如,對於en-US文化,標准的短日期模式是“M / d / yyyy”; 對於de-DE文化,它是“dd.MM.yyyy”; 對於ja-JP文化,它是“yyyy / M / d”。 特定計算機上的特定格式字符串也可以自定義,以便它與標准短日期格式字符串不同。
和
使用與當前線程區域性關聯的DateTimeFormatInfo.ShortDatePattern屬性定義的模式格式化當前DateTime對象的值。 返回值與通過使用ToString(String)方法指定“d”標准DateTime格式字符串返回的值相同。
你可以像Habib建議的那樣使用ToShortDateString
。
它取決於CultureInfo.CurrentCulture
因為CultureInfo
擁有各種關於通常因語言和地點而異的事項的信息,但包括個人偏好。 因此,雖然CurrentCulture.Name
返回en-IE
, DateTime.Now.ToShortDateString()
返回2014-01-24
而不是24/01/2014
因為可以通過使用CultureInfo.GetCultureInfo("en-IE")
返回的對象CultureInfo.GetCultureInfo("en-IE")
,因為我自己的裝備被設置為使用en-IE語言和ISO 8601用於日期和時間。
因此,不要擔心當前文化的名稱和當前與其語言相關的UI文化; 他們可以將UseUserOverride
設置為true,並且實際上是根據用戶的設置構建的。
除了Habib的建議,如果你想使用當前的短日期字符串(或者來自任何其他CultureInfo
的字符串,你可以使用字符串"d"
。這對你的短日期字符串全部使用的情況沒有任何好處,但如果它將成為更大的短語的一部分,它會很有用:
string.Format("Today is {0:d}.", DateTime.Now)
(在我的系統上, Today is 2014-01-24.
或許還有別的東西)。
日期還有其他有用的單字符串格式化字符串 ,可以類似地使用。
編輯:
既然你剛剛指出你使用的是DateTime?
而不是DateTime
,那么你有三個選擇:
DateOfBirth = string.Format("{0:d}", myTable.DateOfBirth)
。 這導致空案例的空字符串。 string.Format
測試nullity,例如DateOfBirth = myTable.DateOfBirth.HasValue ? string.Format("Born on {0:d}.", myTable.DateOfBirth.Value) : "Date of birth unknown";
DateOfBirth = myTable.DateOfBirth.HasValue ? string.Format("Born on {0:d}.", myTable.DateOfBirth.Value) : "Date of birth unknown";
ToShortDateString
測試無效性; DateOfBirth = myTable.DateOfBirth.HasValue ? myTable.DateOfBirth.ToShortDateString() : "Date of birth unknown";
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.