日,月和年的DateTime标准格式

时间:2018-11-22 16:33:59

标签: c# .net

是否存在用于显示“ [日] [月] [年]”的标准DateTime格式? 我不希望使用自定义格式的字符串,因为它取消了根据国家/地区排列“天”和“月”的顺序的功能。 例如,“ en-us”是“ 11月22日”,在法国是第一天,所以是“ 11月22日”

仅显示这样的日期和月份,我知道我可以使用“ M”标准格式的字符串。

但是我怎么写“ 2018年11月22日”?

我需要像这样连接两个字符串吗?

$"{dt.ToString("M")}, {dt.ToString("yyyy")}"

还有其他方法吗?

4 个答案:

答案 0 :(得分:2)

完全选项不可用似乎有点奇怪。我可以建议的最接近的方法是使用自定义格式,而不是提供您自己的格式,而是抓取DateTimeFormatInfo.LongDatePattern并清除所有出现的“ dddd”(及其周围的空间/标点符号)。

这样可以在消除工作日的同时为您提供跨文化的变化。


示例:

  en-US => dddd, MMMM dd, yyyy => MMMM dd, yyyy => November 22, 2018

  fr-FR => dddd d MMMM yyyy    => d MMMM yyyy   => 22 novembre 2018

答案 1 :(得分:1)

据我所知,解决您的问题的方法可能是创建一个新的[mysqld] section对象。

我已经测试过了。

my.cnf

因此格式输出将与您提供的位置格式一样。

CultureInfo

有关更多信息,请重定向至: CultureInfo Class

答案 2 :(得分:0)

$“ {dt.ToString(” MMMM dd,yyyy“)}”

这将显示为2018年11月22日,前提是指定了dt这个日期。 另外,请检出Custom Date Time Format String

答案 3 :(得分:0)

您可以从当前的区域性中获取LongDatePattern,然后用正则表达式删除星期几(dddd)和周围的字符。下面,我假设逗号,句点和空格是唯一的分隔符,但是如果遇到其他分隔符,则可能需要相应地修改正则表达式。

string longDatePattern = CultureInfo.CurrentCulture.DateTimeFormat.LongDatePattern;
string modifiedDatePattern = Regex.Replace(longDatePattern, @"[,.]?\s?d{4}[,.]?\s?", "");

Console.WriteLine(longDatePattern);      //  "dddd, MMMM d, yyyy"
Console.WriteLine(modifiedDatePattern);  //  "MMMM d, yyyy"

现在,您可以应用自定义格式了:

string s = DateTime.Now.ToString(modifiedDatePattern);

Console.WriteLine(s);  // "November 22, 2018"