如何將字串日期轉換為 NSDate?


在 Swift 中,您可以使用 DateFormatter 類將字串日期轉換為日期物件。此類提供日期轉換屬性和方法。在本文中,我們將看到一些日期轉換示例。

DateFormatter 類

Swift 的標準庫有一個用於轉換日期的類。它可用於將字串更改為日期物件,反之亦然。為了解析各種格式的日期物件,此類提供屬性和方法。

您必須構建 DateFormatter 類的物件才能將字串轉換為日期物件,反之亦然。然後可以使用 dateFormat 屬性指定目標格式字串的日期格式。因此,可以使用 string(from:) 函式將日期物件轉換為具有指定格式的字串。

我們可以建立一個 DateFormatter 例項,將其 dateFormat 屬性調整為與輸入字串日期的格式匹配,然後使用日期格式化程式上的 date(from:) 方法,並將輸入字串日期作為引數,將日期的文字表示形式轉換為 Date 物件。此方法返回的可選 Date 物件必須使用 if let 子句或其他可選繫結語法仔細解包。

dateFormat 字串中使用的一些格式字元示例包括

  • yyyy 表示四位數年份

  • MM 表示兩位數的月份

  • dd 表示兩位數的月份日期

  • HH 表示 24 小時制下的兩位數小時

  • mm 表示兩位數的分鐘

  • ss 表示兩位數的秒數

  • a 表示 AM/PM 指示符

  • zzz 表示三位數時區縮寫

  • Z 表示格式為 +/-HHmm 的時區偏移量

DateFormatter 物件的 dateFormat 欄位是一個字串,用於指定日期和時間表示形式的格式。它使用格式字元的組合來定義應包含的任何分隔符或文字,以及應在輸出字串中包含日期和時間的哪些部分。

設定用於轉換的區域設定、時區和日曆只是 DateFormatter 提供的一些其他屬性和方法,用於修改日期格式化和解析的行為。一般來說,DateFormatter 是一個有用的類,用於在 Swift 中處理日期和時間時管理各種日期格式和標準。

演算法

  • 步驟 1 - 建立日期字串物件

  • 步驟 2 - 建立 DateFormatter 類的例項

  • 步驟 3 - 使用 dateFormat 屬性分配日期格式

  • 步驟 4 - 分配時區

  • 步驟 5 - 使用 date(from) 方法將字串轉換為日期物件

  • 步驟 6 - 在控制檯上列印日期物件

示例 1

在此示例中,我們首先建立要轉換的日期的字串表示形式(“2022-05-10”)。然後,我們建立 DateFormatter 的例項並將其 dateFormat 屬性設定為與字串日期格式(“yyyy-MM-dd”)匹配。最後,我們呼叫日期格式化程式上的 date(from:) 方法,並將字串日期作為引數傳遞。這將返回一個可選的 Date 物件,該物件可以在我們的程式碼中使用。

import Foundation
let dateString = "2022-05-10"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let dateObject = dateFormatter.date(from: dateString) {
   print("Date in string: \(dateString)")
   print("Date object: \(dateObject)")
}

輸出

Date in string: 2022-05-10
Date object: 2022-05-10 00:00:00 +0000

示例 2

在此示例中,我們建立一個 DateFormatter 例項,其自定義 dateFormat 屬性設定為“dd-MM-yyyy HH:mm:ss”,這與輸入字串日期的格式匹配。然後,我們使用輸入字串日期作為引數呼叫日期格式化程式上的 date(from:) 方法。這將返回一個可選的 Date 物件,我們使用 if let 語句安全地解包它。最後,我們列印生成的 Date 物件。

import Foundation
let dateString = "10-05-2022 12:30:45"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let dateObject = dateFormatter.date(from: dateString) {
   print("String object: \(dateString)")
   print("Date object: \(dateObject)")
}

輸出

String object: 10-05-2022 12:30:45
Date object: 2022-05-10 12:30:45 +0000

示例 3

在此示例中,我們建立一個 DateFormatter 例項,其 dateFormat 屬性設定為“yyyy-MM-dd'T'HH:mm:ssZZZZZ”,這與具有時區偏移量的輸入字串日期的格式匹配。然後,我們使用輸入字串日期作為引數呼叫日期格式化程式上的 date(from:) 方法。

import Foundation
let dateString = "2022-05-10T12:30:45-05:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let dateObject = dateFormatter.date(from: dateString) {
   print("String object: \(dateString)")
   print("Date object: \(dateObject)")
}

輸出

String object: 2022-05-10T12:30:45-05:00
Date object: 2022-05-10 17:30:45 +0000

示例 4

在此示例中,我們建立一個 DateFormatter 例項,其 dateFormat 屬性設定為“dd-MMM-yyyy”,這與具有縮寫月份名稱的輸入字串日期的格式匹配。然後,我們使用輸入字串日期作為引數呼叫日期格式化程式上的 date(from:) 方法。

import Foundation
let dateString = "10-May-2022"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MMM-yyyy"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let dateObject = dateFormatter.date(from: dateString) {
   print("String object: \(dateString)")
   print("Date object: \(dateObject)")
}

輸出

String object: 10-May-2022
Date object: 2022-05-10 00:00:00 +0000

結論

總之,在 Swift 中將字串日期轉換為 Date 物件涉及使用 DateFormatter 例項,其 dateFormat 屬性設定為與輸入字串日期的格式匹配。一旦我們正確設定了 DateFormatter,我們就可以使用輸入字串日期作為引數呼叫其 date(from:) 方法來獲取可選的 Date 物件。然後,我們需要使用 if let 語句或其他可選繫結語法安全地解包可選物件,並且可以根據需要使用生成的 Date 物件。有了這些知識,我們就可以輕鬆地將各種字串日期格式轉換為 Swift 程式碼中的 Date 物件。

更新於: 2023年4月24日

683 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告