[英]Convert DateTime to a specific format
將 DateTime 轉換為這種格式的最佳和最快的方法是什么?
2015-03-26T18:02:58.145798Z
目前我從服務器收到一個日期,我能夠解析它並將日期轉換為 DateTime 和 ToString() 輸出是這樣的:
26/03/2015 18:02:58
為了轉換日期,我使用了這行代碼:
var parsedDate = DateTime.Parse("2015-03-26T18:02:58.145798Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
將 parsedDate 轉換回原始格式的最佳方法是什么?
編輯:我想將 DateTime 轉換為這種格式 2015-03-26T18:02:58.145798Z 作為字符串
如果您有一個DateTime
對象,您可以使用O
作為格式說明符將其轉換為具有該特定格式的字符串:
parsedDate.ToString("O")
或者
parsedDate.ToUniversalTime().ToString("O") // if parsedDate is not UTC
返回"2015-03-26T18:02:58.1457980Z"
。
如果DateTimeKind
您的DateTime
對象不是Utc
,那么你將無法獲得Z
在字符串的結尾根據ISO8601擴展。 在您提供的示例中, Z
存在是因為DateTime.Parse
會識別它並在Utc
返回DateTime
。 如果您解析的原始字符串中缺少Z
,您仍然可以通過在日期時間對象上使用ToUniversalTime()
來假設它是 UTC。
答案幾乎就是@Dirk所說的:
parsedDate.ToString("O")
是行,但您必須將 DateTime 轉換為 UTC:這就是您在最后獲得“Z”的方式。
有關詳細信息,請參閱https://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29.aspx 。
編輯:
要將 DateTime 轉換為 UTC,請使用ToUniversalTime()
方法。
我所知道的最快的方法是:
///<summary>Format the date time value as a parsable ISO format: "2008-01-11T16:07:12Z".</summary>
public static string ISO( this DateTime dt ) {
var ca = new char[] {
(char) ( dt.Year / 1000 % 10 + '0' ),
(char) ( dt.Year / 100 % 10 + '0' ),
(char) ( dt.Year / 10 % 10 + '0' ),
(char) ( dt.Year % 10 + '0' ),
'-',
(char) ( dt.Month / 10 + '0' ),
(char) ( dt.Month % 10 + '0' ),
'-',
(char) ( dt.Day / 10 + '0' ),
(char) ( dt.Day % 10 + '0' ),
'T',
(char) ( dt.Hour / 10 + '0' ),
(char) ( dt.Hour % 10 + '0' ),
':',
(char) ( dt.Minute / 10 + '0' ),
(char) ( dt.Minute % 10 + '0' ),
':',
(char) ( dt.Second / 10 + '0' ),
(char) ( dt.Second % 10 + '0' ),
'Z',
};
return new string( ca );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.