var todayAt2PM = new DateTime(
DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 14, 0, 0);
Debug.Print("{0:t}", todayAt2PM);
Debug.Print("{0}", todayAt2PM.ToString("t"));
Debug.Print("{0}", todayAt2PM.ToShortTimeString());
当我在C#中运行时,我得到:
14:00
下午2:00
下午2:00
CultureInfo.CurrentCulture
和CultureInfo.CurrentUICulture
都在我的电脑上设置为“en-US”。我没有对我的区域设置进行任何自定义;当我进入控制面板的那一部分时,一切都表示12小时的时间,AM和PM。
那么为什么“{0:t}”使用24小时打印?
答案 0 :(得分:6)
我认为问题出在Debug.Print
上,而不是t
格式说明符。如果您使用Console.WriteLine
代替Debug.Print
,则会提供预期结果。
编辑:看看Reflector ... Debug.Print
总是使用不变文化,而不是当前的文化,并且该文化中的时间格式是24小时
[Conditional("DEBUG")]
public static void Print(string format, params object[] args)
{
TraceInternal.WriteLine(string.Format(CultureInfo.InvariantCulture, format, args));
}