Datetime 日期的格式是否取决于用户';s语言环境和日历系统?

Datetime 日期的格式是否取决于用户';s语言环境和日历系统?,datetime,date,time,calendar,locale,Datetime,Date,Time,Calendar,Locale,我觉得这个问题对于所有语言的程序员来说都是非常普遍的。 这有点模糊。首先,有地区,它封装了文化信息和其他东西。我相信这些区域设置对象还封装了有关日期和时间格式的信息,即如何以Unicode标准显示日期。这样,例如:“yyyy-MM-dd'T'HH:MM:ssZ”。每个国家都可能有自己的日期+时间格式规则,因此我们都对地区感到高兴,我们的应用程序的用户可以将日期+时间格式设置为他们所在地区的常规格式 但现在,真正丑陋的部分。有日历。不同的日历。格里高利历法与美国、欧洲和其他一些国家的历法相似,但也

我觉得这个问题对于所有语言的程序员来说都是非常普遍的。 这有点模糊。首先,有地区,它封装了文化信息和其他东西。我相信这些区域设置对象还封装了有关日期和时间格式的信息,即如何以Unicode标准显示日期。这样,例如:“yyyy-MM-dd'T'HH:MM:ssZ”。每个国家都可能有自己的日期+时间格式规则,因此我们都对地区感到高兴,我们的应用程序的用户可以将日期+时间格式设置为他们所在地区的常规格式

但现在,真正丑陋的部分。有日历。不同的日历。格里高利历法与美国、欧洲和其他一些国家的历法相似,但也有希伯来历法、犹太历法和穆斯林历法等。现在,这些日历当然不同了。他们将一年的时间段划分为不同长度的单位,一些可能有13个月,另一些可能只有月相,而不是周一、周二、周三等等。我真的不知道,但我知道有些人对公历很陌生

但现在模糊的是:谁真的会影响日期+时间格式?地点?日历系统?二者都区域设置是否告诉您通常使用哪种日历系统?日历系统如何影响区域设置和反转


我已经搜索了几乎一整天这个话题,看起来像一块巨大的砖头一样困难。

一个用户可能来自某个地区,他喜欢使用某个日历系统,但由于在远程工作站点或其他地方,他的区域设置有所不同


如果人们需要防弹日历格式,还有数百种类似的情况需要解决。

在典型的操作系统中,按照国际惯例,会有使用公历的日期例程

区域设置将决定日期信息的格式和语言


这不会停止使用独立于操作系统日期功能的其他日历系统,但国际商务是否要求我们就通用日历达成一致?

我将尝试解释它在.Net framewrk中的工作原理

DateTime变量中存储的值是自特定日期以来的刻度数。这与所使用的日历无关。i、 e.无论日历如何,今天都将具有相同的值

区域性包含有关打印日期时使用的格式字符串和日历的信息

当您要求系统格式化字符串时,它将首先执行以下操作:

int year = culture.Calendar.GetYear(dt);
int month = culture.Calendar.GetMonth(dt);
int day = culture.Calendar.GetDay(dt);
在公历中,年份是2009年,但在其他历法中则是其他年份

然后,使用格式字符串以正确的顺序输出值等

因此,以下代码将不会输出正确的ISO日期和希伯来语区域设置

dt.ToString("yyyy-MM-dd'T'HH:mm:ssZ");
正确的方法是

dt.ToString("yyyy-MM-dd'T'HH:mm:ssZ", CultureInfo.InvariantCulture);


后者之所以有效,是因为框架会自动忽略“s”格式说明符(以及其他一些说明符)的文化。

是的,我认为它可以,但用户可能希望使用待办软件或其他方式跟踪文化或宗教事务。
dt.ToString("s");