DateTime.ToString("s")始终返回相同的格式吗?

12
根据MSDN on DateTime.ToString,ToString("s")应始终以可排序的XML模式格式返回字符串,例如: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));
    }
}

1
这个问题为什么还没有关闭? - Irwin
2个回答

18

是的,它可以。正如其他人所说,它只包含数字值和字符串字面量(例如'T'和':'),没有受区域或文化设置影响的内容。


13

没错。 将该模式分解,它只涉及数字属性,没有任何关于月份或日期名称的参考。

yyyy - 四位数日期
MM - 两位数月份,带前导零
dd - 两位数日期,带前导零
T - 字面上的 T
HH - 两位数小时,带前导零,24 小时制
mm - 两位数分钟,带前导零
ss - 两位数秒钟,带前导零


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接