我在C#中的變量日期,我創建使用C#創建新的datetime
var date = new DateTime(2000, 01, 01)
日期的結果01/01/2000 - >這是月/日/年
我想要的結果是格式日期/月/年
我知道我可以格式化這一個..但是有沒有另一種方法可以自動格式日期/月/年格式日期?
我在C#中的變量日期,我創建使用C#創建新的datetime
var date = new DateTime(2000, 01, 01)
日期的結果01/01/2000 - >這是月/日/年
我想要的結果是格式日期/月/年
我知道我可以格式化這一個..但是有沒有另一種方法可以自動格式日期/月/年格式日期?
In .net日期格式基於您的機器本地化。所以你有兩個選擇。
1)更改您的機器語言和文化設置。
2)更改線程CultureInfo以呈現正確的合成日期。
欲瞭解更多信息,請參閱https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.110).aspx
是的,我知道這種方法,但會出現錯誤,因爲我的機器和客戶端機器有不同的設置..我只是想從代碼的角度知道。但是,謝謝你的評論 – gill23
那麼,你可以玩技巧。找到客戶的文化並進行相應設置。如果你有asp.net應用程序,你可以很容易地做到這一點。 – Saleem
@ gill23 - 「bug」是什麼意思? – Enigmativity
如果您在源代碼中查找該DateTime
類型,你會發現這條線的.NET架構:
private ulong dateData;
這就是DateTime
的存儲方式。沒有格式。
從您的代碼new DateTime(2000, 01, 01)
開始,該DateTime
的基礎值爲630822816000000000
。
但是,當你去顯示一個日期時,如果.ToString()
產生了630822816000000000
而不是像01/01/2000
之類的東西,那將是非常無益的。
所以,還是在源代碼,你會發現這個覆蓋:
public override string ToString()
{
return DateTimeFormat.Format(this, (string) null, DateTimeFormatInfo.CurrentInfo);
}
有效地,.ToString()
方法使用格式化日期當前區域性的信息。
你總是可以做到這一點,以確保獲得一致的結果:
var date = new DateTime(2000, 4, 16);
var us = date.ToString(CultureInfo.GetCultureInfo("en-us"));
var au = date.ToString(CultureInfo.GetCultureInfo("en-au"));
這導致在分別採用以下格式:
4/16/2000 12:00:00 AM 16/04/2000 12:00:00 AM
日期是數值。他們沒有*格式*。您將格式設置爲便於人們閱讀。 'date'不包含任何文本內容,並且沒有格式。 –
所以,你們都意味着它是月/日/年格式的日期的默認值。要更改爲日期/月/年,我必須手動格式化日期變量? – gill23
@ gill23,系統默認日期格式取決於您的操作系統的語言設置。如果您選擇了英式英語,則會將其格式設置爲「dd/mm/yyyy」。 – Saleem