为什么DateTime使用/格式符格式化日期时输出分隔符为-?
问题核心原因
DateTime.ToString()的格式字符串中,/是日期分隔符占位符,并非字面量斜杠。它会自动替换为当前运行环境所属区域设置(CultureInfo)中定义的默认日期分隔符,你当前环境的默认日期分隔符为-,因此格式化结果就出现了1-23-2021的输出。
可行解决方案
你可以任选以下一种方案实现固定/分隔的日期格式:
- 强制将斜杠标记为字面量,用单引号包裹格式字符串中的
/即可:new DateTime().ToString("M'/'dd'/'yyyy") - 指定使用不变文化(InvariantCulture)执行格式化,该文化的默认日期分隔符就是
/:// 需要先引用命名空间 using System.Globalization; new DateTime().ToString("M/dd/yyyy", CultureInfo.InvariantCulture)
适用场景说明
如果你只需要固定输出斜杠分隔的日期格式,两种方案均可正常生效;如果你的程序需要后续适配多区域的日期显示习惯,建议优先使用显式指定格式化文化的方案,避免不同运行环境的区域差异导致输出异常。
内容的提问来源于stack exchange,提问作者Kristofer
相关产品推荐
相关产品推荐

