簡體   English   中英

將 DateTime 轉換為特定格式

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

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