本地化日期范围

Sco*_*ski 12 .net c# globalization datetime date

有谁知道如何使用C#本地化日期范围?

特别是,我想生成"智能"日期范围,以便消除冗余信息.

以下是美国英语中的一些示例

  1. 8月 - 2009年9月
  2. 2009年8月
  3. 2009年8月1日至9日
  4. 2009年1月1日至3月3日
  5. 2009年12月6日 - 2010年1月8日

形成我可以告诉.NET Framework支持本地化日期,但不支持日期范围.

使用支持System.Globalization.DateTimeFormatInfo的Windows语言环境中的信息CultureInfo,我能够(大部分时间)弄清楚如何执行项目#1和#2.第2项就是DateTime.ToString(DateTimeFormatInfo.YearMonthFormat).使用YearMonthFormatI还能够推断出大多数语言用于#1的格式.对于少数我不能,我只是重复一年.

不幸的是,我无法弄清楚如何使用.NET Framework执行#3-#5项.Outlook格式使用这些格式进行格式化,所以我希望可能有一些Win32 API会这样做,但Google搜索"Win32 Date Range本地化"没有任何用处.

我喜欢"智能范围格式化"提供的增强的可用性,我希望没有使用英文版Windows的客户获得相同的好处.

有没有人知道如何以文化依赖的方式做到这一点?

Sco*_*ski 1

我最终为此定义了自己的范围格式。

大多数情况下,我从 LongDatePattern 派生它们。在可能的情况下,我根据 Google 日历和/或母语人士验证了格式。

我还为时间范围(同一天之内)生成了 2 种格式,一种用于同一 12 小时内的时间,另一种用于同一 12 小时内的时间(对于使用 24 小时时间的文化,这两种格式是相同的)。这些大多基于 FullDateTimePattern。

在所有情况下,我尽可能从所有格式中删除“日期名称”(星期一、星期二等)。

我很想将它们发布在这里,但 Stack Overflow 的人们似乎对 html 表格有一种非理性的恐惧,因为他们不允许使用表格标签。数据本质上是一个巨大的表格。我对尝试使用 CSS 模拟表格没有兴趣,所以我只是将表格放在我自己的网站上。如果您有兴趣,可以在这里访问:

http://www.transactor.com/misc/ranges.html

如果您真的感兴趣的话,我确实有一些关于如何导出许多格式的详细说明,包括哪些已验证,哪些尚未验证。如果您想要这些注释,只需发送电子邮件至:

contact@transactor.com

我很乐意将它们发送给您。