簡體   English   中英

轉換日期時間? 串起來

[英]Convert DateTime? to string

我想轉換一個DateTime? 串起來。 如果日期為空,則返回"" ,否則返回如下字符串格式: "2020-03-05T07:52:59.665Z" 代碼是這樣的,但它不起作用。 它說"DateTime?" 不包含“ToUniversalTime”的定義。 有人知道如何解決這個問題嗎?

DateTime? date = DateTime.UtcNow;

var dateInUTCString = date == null ? "" : date.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");

DateTime? Value屬性和HasValue屬性

嘗試:

var dateInUTCString = date.HasValue ? date.Value.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'") : "";

您可以使用簡短版本:

var dateInUTCString = date?.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'") ?? "";

雖然您可以按照 Leszek 的回答直接使用Value屬性,但我可能會將空條件運算符與空合並運算符結合使用:

string dateInUTCString =
    date?.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture) 
    ?? "";

這里的?. 如果date為空,則只會導致空值,而?? 如果date?.ToUniversalTime().ToString(...)調用的結果為 null(只有在date為 null 時才會發生date?.ToUniversalTime().ToString(...)運算符將提供一個默認值。

請注意,您確實希望指定不變區域性以避免在當前線程的區域性不使用公歷時獲得意外結果,並且您不需要在格式字符串中引用所有這些文字。 當你這樣做時它當然有效,但更難閱讀 IMO。

如果您不介意在字符串中表達多少精度,您可以使用“O”標准格式字符串使代碼更簡單:

string dateInUTCString = date?.ToUniversalTime().ToString("O") ?? "";

那時您不需要指定CultureInfo.InvariantCulture ,因為“O”總是使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM