解析/格式化Datetime时如何控制时区偏移中':'的外观

Jad*_*son 12 .net timezone datetime

我正在使用一个协议,在指定日期时间信息时可以选择包括时区偏移.我的代码是用C#编写的,我们使用的是4.0 .NET运行时.我看到有一个格式化选项"zzz"用于在解析和格式化时包含时区信息,但是,似乎冒号(:)是固定的.例如,使用自定义格式字符串(yyyyMMddHHmmsszzz)格式化的Datetime可能显示为:

20100309101530-05:00

我正在使用的协议不包括时区偏移中的冒号.此协议将格式化日期时间,并期望它们格式化为:

20100309101530-0500

在使用包含时区偏移量的自定义格式化程序解析或格式化日期时间时,有没有办法控制冒号的外观?

Jon*_*Jon 10

看起来没有任何内置的东西(你可以使用zz,但这会遗漏分钟).

您可以通过实例化一个推出自己的DateTimeFormatInfo,设置TimeSeparatorstring.Empty和使用的IFormatProvider调用时DateTime.ToString(和拨打电话明确,如果没有的话).

但坦率地说,使用从默认返回值中Replace删除不需要:的东西要容易得多.


Ale*_*sco 6

我遇到了同样的问题,最终使用了扩展程序

    public static class DateTimeExtensions
    {        
        public static String ToSomeFormat(this DateTimeOffset dateTime)
        {
            return dateTime.ToString("yyyyMMddHHmmsszzz").Replace(":", "");
        }
    }
Run Code Online (Sandbox Code Playgroud)