我在C#中创建了一个可变日期,我使用它创建
var date = new DateTime(2000, 01, 01)
Run Code Online (Sandbox Code Playgroud)
日期的结果是01/01/2000 - >这是月/日/年
我希望结果是格式日期/月/年
我知道我可以格式化这个..但是,那个日期还有另一种方式会自动格式化日期/月/年而无需手动格式化日期吗?
如果您查看该DateTime类型的.NET框架的源代码,您将找到以下行:
private ulong dateData;
Run Code Online (Sandbox Code Playgroud)
这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);
}
Run Code Online (Sandbox Code Playgroud)
实际上,该.ToString()方法使用当前文化的信息来格式化日期.
您始终可以执行此操作以确保获得一致的结果:
var date = new DateTime(2000, 4, 16);
var us = date.ToString(CultureInfo.GetCultureInfo("en-us"));
var au = date.ToString(CultureInfo.GetCultureInfo("en-au"));
Run Code Online (Sandbox Code Playgroud)
这分别产生以下格式:
4/16/2000 12:00:00 AM 16/04/2000 12:00:00 AM
在 .net 中,日期格式基于您的计算机本地化。所以你有两个选择。
1)更改您的机器语言和文化设置。
2) 更改线程 CultureInfo 以以正确的格式呈现日期。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.110).aspx