Don*_*alo 5 c# wpf datetime string-formatting
以下代码:
DateTime dt = new DateTime(2013, 9, 13, 14, 34, 0);
string s = dt.ToString("MM/dd/yyyy");
textBox1.AppendText(DateTime.Now + "\n");
textBox1.AppendText(s + "\n");
textBox1.AppendText(dt.ToString() + "\n");
Run Code Online (Sandbox Code Playgroud)
在文本框中生成以下输出:
13.09.2013 1441.28
09.13.2013
13.09.2013 1434.00
Run Code Online (Sandbox Code Playgroud)
从输出的第一行开始,很明显在我的PC的区域设置中,日期/时间被格式化为date.month.year HHmm.ss.
输出的第二行让我很困惑.虽然我MM/dd/yyyy为变量指定了格式s,但DateTime对象的格式为MM.dd.yyyy.为什么?
这是.NET Framework 4上的C#WPF程序.
/是当前文化的日期分隔符的占位符.如果要将其强制为分隔符,则必须指定CultureInfo.InvariantCulture:
string s = dt.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
请参阅:"/"自定义格式说明符
从
DateTimeFormatInfo.DateSeparator当前或指定区域性的属性中检索适当的本地化日期分隔符 .
如果要解析a string,也是如此DateTime.
FormatException如果当前文化的实际日期分隔符不是,则抛出a /:
DateTime.ParseExact("09/13/2013", "MM/dd/yyyy", null);
Run Code Online (Sandbox Code Playgroud)
始终有效:
DateTime.ParseExact("09/13/2013", "MM/dd/yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)