覆盖DateTime.ToString以使用“o”而不是“G”

时间:2009-11-23 05:19:55

标签: .net datetime

.Net中是否有任何方法我可以使用DateTime.ToString()使用的默认格式从ToString(“G”)更改为ToString(“o”)?

我没有选择使用不同的重载,它必须是ToString()。

更新: 我找到了一种使用DateTimeOffset做我需要的方法但是看到Gonzalo的解决方案非常有用。

1 个答案:

答案 0 :(得分:3)

这是我能得到的最接近的。唯一的问题是日期和 T 之间有一个空格:

using System;
using System.Threading;
using System.Globalization;

class Test {
    static void Main ()
    {
        Console.WriteLine (DateTime.Now.ToString ("o"));
        CultureInfo culture = (CultureInfo) CultureInfo.CurrentCulture.Clone();
        culture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
        culture.DateTimeFormat.LongTimePattern = "THH:mm:ss.fffffffzzz";
        Thread.CurrentThread.CurrentCulture = culture;
        Console.WriteLine (DateTime.Now);
    }
}

输出结果为:

  

2009-11-23T00:32:53.5291030-05:00
  2009-11-23 T00:32:53.6493060-05:00