4

M/d/yyyy无论使用 C# 的日期系统格式如何,如何获取今天的日期格式?

DateTime.Now.Tostring('M/d/yyyy')

仅当系统日期采用格式dd/MM/yyyyM/dd/yyyy但不适用于大小写yyyy-MM-dd格式时才有效。

例如:

如果系统日期是2013-06-26然后DateTime.Now.Tostring('M/d/yyyy')将日期转换为06-26-2013但不是06/26/2013

4

4 回答 4

9

用于CultureInfo.InvariantCulture强制/作为日期分隔符:

DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture) 

爱迪生

于 2013-06-26T11:41:10.967 回答
5

看起来您只需要CultureInfo.InvariantCulture在方法中用作第二个参数.ToString

Console.WriteLine(DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture));
于 2013-06-26T11:42:19.453 回答
5

如果您总是希望相同的 DateTime 在多个系统上(甚至由于文化变化而在同一系统上)生成完全相同的字符串,则使用不变的文化是正确的解决方案。但是,请注意,如果这是用户可见的,那么您就放弃了国际化的可能性(例如,如果您显示日期或月份名称,无论用户说什么语言,它们都将是英文)。为了确保斜杠不会被另一个日期分隔符替换,请使用引号:

DateTime.Now.Tostring("M'/'d'/'yyyy");

编辑:

此外,如果您的用户使用不同的日期格式,他们很有可能也使用不同的时区。如果这DateTime需要跨多个系统有意义,请考虑使用DateTime.UtcNow. 这也将保护您免受由于用户更改时区(例如旅行时)或夏令时/夏季时间开始/结束而导致的潜在错误。如果您只是在当前实例中向用户显示字符串而不是持久化它,那么DateTime.Now可能就是您想要的。但是,在这种情况下,我会质疑您为什么要尝试弄乱他们选择的格式。

于 2013-06-26T12:01:12.700 回答
2

像这样:

DateTime.Now.Tostring("M'/'d'/'yyyy");

撇号强制ToString()方法使用您指定的分隔符。

但是,我会让用户选择一种文化并使用该文化的默认格式。

于 2013-06-26T11:49:35.910 回答