Dot-Net

解析/格式化日期時間時如何控制時區偏移中“:”的外觀

  • November 16, 2019

我正在使用一種協議,該協議在指定日期時間資訊時可以選擇包含時區偏移量。我的程式碼是用 C# 編寫的,我們使用的是 4.0 .NET 執行時。我看到有一個格式化選項“zzz”,用於在解析和格式化時包含時區資訊,但是,冒號 (:) 似乎是固定的。例如,使用自定義格式字元串 (yyyyMMddHHmmsszzz) 格式化的日期時間可能顯示為:

20100309101530-05:00

我正在使用的協議不包括時區偏移中的冒號。該協議將格式化日期時間,並期望它們被格式化為:

20100309101530-0500

在使用包含時區偏移的自定義格式化程序解析或格式化日期時間時,有沒有辦法控制冒號的外觀?

看起來沒有任何內置功能(您可以使用zz,但忽略了分鐘)。

您可以通過實例化 a DateTimeFormatInfo,設置TimeSeparator並將string.Empty其用作IFormatProvider呼叫時自己的呼叫DateTime.ToString(如果還沒有呼叫,則使呼叫顯式)。

但坦率地說,使用從預設返回值Replace中刪除不需要:的值要容易得多。

如果您在使用 replace 或 extend 沒有意義的地方使用它(例如,-05:00在傳遞 as 時可能希望輸出為冒號的東西zzz)並且分鐘無關緊要,您可以用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)

引用自:https://stackoverflow.com/questions/5247876