[英]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.