c# - DateTime.ToString 格式表达式是否受当前区域性影响?

标签 c# .net string datetime locale

我有一些代码以胖客户端应用程序的格式记录时间戳

DateTime.UtcNow.ToString("MM/dd/yy HH:mm:ss")

现在,在中国运行的客户端(不确定具体是哪个区域设置)这会在日志中生成格式为

11-20-13 02:14:03

我注意到它使用 - 而不是/来分隔部分,即使我明确想要/

我试图将当前文化设置为简体中文 zh-CN,但我无法重现远程客户端如何生成该字符串

当前区域性是否影响此格式字符串的输出?还是/有其他我不知道的含义?

最佳答案

是的,/ 字符是当前文化用于分隔日期部分的任何占位符。来自 MSDN :

The "/" custom format specifier represents the date separator, which is used to differentiate years, months, and days. The appropriate localized date separator is retrieved from the DateTimeFormatInfo.DateSeparator property of the current or specified culture.

与其他格式说明符一样,您可以使用 \/ 进行转义:

DateTime.UtcNow.ToString(@"MM\/dd\/yy HH\:mm\:ss")

或者在格式化字符串时指定明确的文化:

DateTime.UtcNow.ToString("MM/dd/yy HH:mm:ss", CultureInfo.InvariantCulture)

关于c# - DateTime.ToString 格式表达式是否受当前区域性影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20086656/

相关文章:

c# - 我应该在哪个级别应用依赖注入(inject)? Controller 还是域?

c# - UTF8Encoding string to byte[] 转换意外行为

c# - 确保 IEnumerable 不为空的契约(Contract)

c# - 你如何从 C# 中的 DLL 中找到基本 url?

java - Java中的字符串分割函数

Java:字符串分割

c# - 数据访问层的计算

c# - TempData 值在 RedirectToAction() 之后从 List<string> 隐式转换为 string[]

c# - 如何在 PropertyValidator 重写的 IsValid 中等待方法?

c# - XmlSerializer 在 .net framework 和 .net core 上与属性的私有(private) getter 行为不同