日期格式名称 "dd day of MMMM, yyyy"

Name for date format "dd day of MMMM, yyyy"

我在一个对 .NET 支持最少的平台上工作,所以我们经常不得不为日期、字符串等推出我们自己的实用方法。整个团队都有 .NET 背景,所以我们尝试命名这些familiar/suggestive 类似的 .NET 方法。

我们处理了很多法律术语,最后以特定方式写下日期:“this 5th day of March, 2020”。我需要编写一个接受日期的函数,并且 returns 它的格式是这样的。

.NET 语言中是否有现有 日期时间格式:“MMMM 的第 3 天,yyyy”?我不能使用那个,但我更愿意使用那个 name。我在文档中找不到,但我可能遗漏了它。

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

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

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

最重要的是当您需要将它们作为简单文本时,正确转义所有通常用于日期格式的字母

例如:

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);
}

当然,日期时间格式非常依赖于当前的全球化设置,这可能仅适用于英语文化。如果您需要支持不同的文化,那么这还不够,可能有一些库可以为您提供更好的解决方案

使用1st 2nd称为序号指示符。

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

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