C#创建新的DateTime

gil*_*l23 2 c#

我在C#中创建了一个可变日期,我使用它创建

var date = new DateTime(2000, 01, 01)
Run Code Online (Sandbox Code Playgroud)

日期的结果是01/01/2000 - >这是月/日/年

我希望结果是格式日期/月/年

我知道我可以格式化这个..但是,那个日期还有另一种方式会自动格式化日期/月/年而无需手动格式化日期吗?

Eni*_*ity 7

如果您查看该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


Sal*_*eem 4

在 .net 中,日期格式基于您的计算机本地化。所以你有两个选择。

1)更改您的机器语言和文化设置。

2) 更改线程 CultureInfo 以以正确的格式呈现日期。

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.110).aspx