从DateTime.Now中删除UtcOffset

时间:2012-02-08 19:15:00

标签: c# datetime-format

我需要没有utcOffset的往返格式的DateTime.Now值。基于此MSDN article,如果您在没有UtcOffset的情况下创建DateTime的新实例,它将生成我想要的格式。

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
// Displays 2008-04-10T06:30:00.0000000   

但如果我使用DateTime.Now,我会得到字符串中的偏移量:

DateTime.Now.ToString("o")
// Displays 2012-02-08T14:11:12.8378703-05:00   

我可以使用子字符串或填充没有它的DateTime实例,但我想知道是否有办法删除UtcOffset。

3 个答案:

答案 0 :(得分:6)

如果DateTime.Kind既不是Utc也不是Local,则会忽略UTC偏移量(例如“-05:00”或“Z”)。

您可以按如下方式创建此类DateTime值:

DateTime.UtcNow.ToString("o");
// "2012-02-08T19:19:38.5767158Z"

new DateTime(DateTime.UtcNow.Ticks).ToString("o");
// "2012-02-08T19:19:38.5767158"

new DateTime(DateTime.Now.Ticks).ToString("o");
// "2012-02-08T14:19:38.5767158"

答案 1 :(得分:3)

如果我了解您的需求,可以使用DateTime.UtcNow

DateTime.Now.ToString("o")
DateTime.UtcNow.ToString("o")

输出:

2012-02-08T13:18:22.4459488-06:00
2012-02-08T19:18:22.4599488Z

答案 2 :(得分:0)

我只是通过使用

将我归零
new DateTimeOffset(Date_Goes_Here, TimeSpan.Zero);