如何將字串日期轉換為 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 物件。