给定C#中的dateTime对象,是否根据计算机区域设置显示日期?

给定C#中的dateTime对象,是否根据计算机区域设置显示日期?,c#,datetime,C#,Datetime,假设我在C#中有一个DateTime对象,日期是2011年1月3日 在某些地区,它将是2011年1月3日,而在某些地区,它将是2011年3月1日 如何获取计算机的区域设置以显示datetime.toString()适当的值?datetime.toString()没有参数,实际使用的是当前区域性。因此,.ToString()的输出在多台机器上会有所不同,这取决于它们的区域性。DateTime.ToString()不带参数实际上使用的是当前区域性。因此,.ToString()的输出在多台计算机上会有

假设我在C#中有一个
DateTime
对象,日期是
2011年1月3日

在某些地区,它将是
2011年1月3日
,而在某些地区,它将是
2011年3月1日

如何获取计算机的区域设置以显示
datetime.toString()
适当的值?

datetime.toString()
没有参数,实际使用的是当前区域性。因此,
.ToString()
的输出在多台机器上会有所不同,这取决于它们的区域性。
DateTime.ToString()
不带参数实际上使用的是当前区域性。因此,
.ToString()
的输出在多台计算机上会有所不同,这取决于它们的区域性。

DateTime.ToString()方法没有参数,会自动使用考虑区域性的G format参数。有关详细信息,请参见和。

DateTime.ToString()方法不带参数,会自动使用考虑区域性的G format参数。有关详细信息,请参见和。

您可以将当前区域性设置为使用字符串格式来执行此操作:

String.Format(CultureInfo.CurrentCulture, "{0}", DateTime.Now)
此外,如果您想更改为不同的区域性,可以执行以下操作:

String.Format(new CultureInfo("en-IN"), "{0}", DateTime.Now)
输出: 2013年7月9日下午5:04:33 09-07-2013 17:04:34

您可以使用字符串。将当前区域性设置为

String.Format(CultureInfo.CurrentCulture, "{0}", DateTime.Now)
此外,如果您想更改为不同的区域性,可以执行以下操作:

String.Format(new CultureInfo("en-IN"), "{0}", DateTime.Now)
输出: 2013年7月9日下午5:04:33
2013年7月9日17:04:34

我在回答中想说的相关内容(在不到15秒内得到-2后删除,这里的人真的很快:)是,也许你应该依赖一种硬编码格式,清楚地突出显示什么是什么。例如:2011年1月3日或2011年1月3日;最后,还包括一个供用户更改格式的选项。有许多用户甚至不知道他们计算机上的确切区域设置。盲目依赖这一点可能会导致一些不清楚的情况,比如2011年1月3日,一台具有美国设置的计算机,由于该程序是在英国创建的,因此可能会被错误地安装。相关我在回答中打算说的内容(在不到15秒内得到-2后删除,这里的快速用户:))也许你应该依靠一个硬编码的格式,清楚地突出显示什么是什么。例如:2011年1月3日或2011年1月3日;最后,还包括一个供用户更改格式的选项。有许多用户甚至不知道他们计算机上的确切区域设置。盲目依赖这一点可能会导致一些不清楚的情况,比如2011年1月3日,一台设置为美国的计算机,由于该程序是在英国创建的,因此可能会被错误地安装。谢谢。我试图通过转到区域和语言->格式来更改我的区域设置:。。“并将其更改为其他内容,但我总是使用ToString的dd/mm/yyyy日期。我缺少什么?更改设置后是否重新启动程序?我不知道,但我认为当前区域性信息可能首先在进程级别缓存,然后用于初始化该进程中可运行的每个线程。对的最后一件事,是否可以只制作年份2数字,就像我可以做dd/mm/yy一样,但让dd/mm根据区域设置进行安排?谢谢。我试图通过转到区域和语言->格式来更改我的区域设置:。。“并将其更改为其他内容,但我总是使用ToString的dd/mm/yyyy日期。我缺少什么?更改设置后是否重新启动程序?我不知道,但我认为当前区域性信息可能首先在进程级别缓存,然后用于初始化该进程中可运行的每个线程。对的最后一件事,是否可以像我可以做dd/mm/yy那样只做年份数字,但让dd/mm根据区域设置来安排?