DateTime.ToString(“s”)是否始终返回相同的格式?

时间:2009-06-29 12:24:47

标签: datetime tostring cultureinfo regional

根据MSDN on DateTime.ToString ToString(“s”)应始终以可排序的XML Schema样式格式的格式返回字符串,例如:2008-10-01T17:04:32.0000000

在Reflector中,我在DateTimeFormatInfo中找到了这个模式。

public string SortableDateTimePattern
{
      get
      {
            return "yyyy'-'MM'-'dd'T'HH':'mm':'ss";
      }
}

DateTime.ToString(“s”)是否始终返回此格式的字符串?
无论文化,地区,......


是的,确实如此 用于测试的代码

var dateTime = DateTime.Now;
var originialString = dateTime.ToString("s");
string testString;

foreach (var c in System.Globalization.CultureInfo.GetCultures(CultureTypes.AllCultures))
{
    Thread.CurrentThread.CurrentUICulture = c;
    if (c.IsNeutralCulture == false)
    {
        Thread.CurrentThread.CurrentCulture = c;
    }

    testString = dateTime.ToString("s");
    Console.WriteLine("{0} ", testString);
    if (originialString != testString)
    {
        throw new ApplicationException(string.Format("ToString(s) is returning something different for {0} " , c));
    }
}

2 个答案:

答案 0 :(得分:15)

是的。正如其他人所说,它只包含数值和字符串文字(例如'T'和':'),没有任何区域或文化设置改变。

答案 1 :(得分:11)

是的。 Breaking that pattern down,它只是数字属性,没有像月或日名称那样的引用。

yyyy - 4位数日期
MM - 2个月的月份,前导零 dd - 2位数日,前导零 T - 文字T
HH - 2位数小时,前导零,24小时格式
mm - 2位数分钟,前导零点 ss - 2位数秒,前导零