假设我有一个DateTime对象代表今天午夜的日期(2017-08-02 00:00:00.000)
我想采用该对象并以用户可读的方式呈现它,其中包含月,星期和月的日期。
在北美,我的理解是它的格式如下:
7月2日星期一
然而,在挪威语中,它看起来像这样:
Mandag 2. juli
正如您所看到的,月份和月份的某一天已经切换了位置,“星期一”之后没有逗号,并且在2之后添加了一个句号以表示它是序数。
.NET(或像NodaTime这样的某些库)有没有办法让这种格式开箱即用,或者我是否需要为我们的应用支持的每种语言对其进行硬编码?
答案 0 :(得分:0)
您可以使用standard format strings日期来获取调用yourDate.ToString(<formatStringHere>)
时特定于文化的预定义格式。最接近您要求的那个将是&#34; D&#34;格式字符串,但确实包括年份。
yourDate.ToLongDateString()
是另一种获取此格式的方法。
如果可以忽略日期和其他部分之间的,
或者可以始终存在,则可以合并"M"
格式字符串,该字符串为您提供月份/使用"dddd"
自定义格式的日期格式,为您提供日期名称。
var dateString = $"{yourDate.ToString("dddd")}, {yourDate.ToString("M")}"
但我并不知道您的要求是否适合开箱即用。
答案 1 :(得分:0)
您可以使用DateTimeFormat.LongDatePattern获取长日期格式并删除年份部分。
例如:
DateTime d = new DateTime(2017, 01, 10);
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
string s = culture.DateTimeFormat.LongDatePattern;
s = s.Replace("y", "");
Console.WriteLine(d.ToString(s));
虽然这样做可以获得一些奇怪的输出。这将输出:
Tuesday, January 10,