日期格式的名称“ MMMM的dd日,yyyy”

问题描述

我正在一个对.NET的支持最少的平台上工作,因此我们经常不得不为日期,字符串等使用自己的实用程序方法。整个团队都有.NET背景,因此我们尝试用熟悉的方式命名这些/建议使用类似的.NET方法

我们处理许多法律问题,并以一种特定的方式写日期:“ 2020年3月5日”。我需要编写一个带有日期并将其格式化为日期的函数

.NET语言中是否存在现有日期时间格式,用于:“ MMMM的dd日,yyyy”?我不能使用它,但是我更愿意使用那个 name 。我在文档中找不到一个,但是可能会丢失它。

如果没有,是否有这种格式的通用术语,也许是其他通用语言的版本?

我知道这并不是严格意义上的代码问题,但是如果我在English.StackExchange上问,他们会抱怨它与代码相关。

解决方法

据我所知,没有满足您要求的内置格式化表达式,但是编写扩展以一劳永逸地进行格式化并不是很复杂。

最重要的是,当您需要简单格式的字母时,请正确转义所有通常用于日期格式的字母

例如:

public static string LegalDateFormat(this DateTime d)
{
    
    int day = d.Day;
    string suffix = (day == 1 ? "\\s\\t" : day == 2 ? "n\\d" : day == 3 ? "r\\d": "\\t\\h");
    
    // string format = $"\\t\\hi\\s i\\s \\t\\he d{suffix} \\da\\y o\\f MMMM,yyyy";
    // better,as proposed by Hans Kesting in his comment below
    string format = $"'this is the 'd'{suffix} day of 'MMMM,yyyy";
    return d.ToString(format);
}

当然,日期时间格式在很大程度上取决于当前的全球化设置,这仅对于英语文化是可以接受的。如果您需要支持不同的文化,那么这还不够,也许有些图书馆可以为您提供更好的解决方案

,

将第1个2nd用作序号指示符。

.net框架中对此概念没有内置支持,因为它仅适用于几种语言。反过来,您所要求的格式也不被直接支持。

您可以自己构建它,也可以查看旨在填补这一空白的人性化项目https://github.com/Humanizr/Humanizer#datetime-to-ordinal-words