我正在使用一种协议,当指定日期时间信息时,该协议可能会包括时区偏移量。我的代码是用C#编写的,我们正在使用4.0 .NET运行时。我看到在解析和格式化时有一个formatting option "zzz"用于包含时区信息,但是,冒号(:)似乎是固定的。例如,使用自定义格式字符串(yyyyMMddHHmmsszzz)格式化的Datetime可能显示为:
20100309101530-05:00
我正在使用的协议在时区偏移量中不包含冒号。该协议将格式化日期时间,并期望将其格式化为:
20100309101530-0500
使用包含时区偏移的自定义格式器解析或格式化日期时间时,是否有一种方法可以控制冒号的外观?
看起来好像没有内置的东西(您可以使用zz
,但是省去了几分钟的时间。]
您可以通过实例化一个DateTimeFormatInfo
,将DateTimeFormatInfo
设置为TimeSeparator
,并在调用string.Empty
时将其用作IFormatProvider
,来滚动自己的电话(如果尚未调用,则使之明确)。] >
但是坦率地说,使用DateTime.ToString
从默认返回值中删除不需要的Replace
非常容易。
我遇到了同样的问题,最终使用扩展名
[如果您在无用替换或扩展的地方使用它(例如,当传递为:
时可能想要用冒号输出为 public static class DateTimeExtensions
{
public static String ToSomeFormat(this DateTimeOffset dateTime)
{
return dateTime.ToString("yyyyMMddHHmmsszzz").Replace(":", "");
}
}
的内容),而分钟数可以用-05:00
伪造它。
我有完全相同的zz00
,试图以var date = new DateTimeOffset(2008, 8, 1, 0, 0, 0, new TimeSpan(-5, 0, 0));
Console.WriteLine(date.ToString("yyyy-MM-dd-HH:mm:ss(zz00)"));
// outputs 2008-08-01-00:00:00(-0500)
之类的格式格式化/解析时区。