1. ホーム
  2. アイオス

[解決済み】SwiftのDateオブジェクトを作成するにはどうすればよいですか?

2022-04-14 10:17:03

質問

swift xcodeで日付から日付オブジェクトを作成する方法。

例えば、javascriptでは次のようになります。 var day = new Date('2014-05-20');

解決方法は?

Swiftは独自の Date 型があります。を使用する必要はありません。 NSDate .

Swiftで日付と時刻を作成する

Swiftでは、日付と時刻は、基準日である2001年1月1日00時00分00秒からの秒数を測定する64ビットの浮動小数点数で格納されます。 UTC . で表されます。 Date 構造体 . 次のようにすると、現在の日付と時刻が表示されます。

let currentDateTime = Date()

その他の日付時刻を作成する場合は、以下のいずれかの方法を使用することができます。

方法1

2001年の基準日の前後何秒かがわかっていれば、それを利用することができます。

let someDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM

方法2

もちろん、(相対秒数ではなく)年、月、日、時間といったものを使えば、もっと簡単です。 Date . これには DateComponents でコンポーネントを指定し Calendar で日付を作成します。その CalendarDate のコンテキストを使用します。そうでなければ、どのタイムゾーンやカレンダーで表現すればよいのか、どうやって知ることができるのでしょうか?

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1980
dateComponents.month = 7
dateComponents.day = 11
dateComponents.timeZone = TimeZone(abbreviation: "JST") // Japan Standard Time
dateComponents.hour = 8
dateComponents.minute = 34

// Create date from components
let userCalendar = Calendar(identifier: .gregorian) // since the components above (like year 1980) are for Gregorian
let someDateTime = userCalendar.date(from: dateComponents)

その他のタイムゾーンの略語はこちら こちら . これを空白にすると、ユーザーのタイムゾーンがデフォルトで使用されます。

方法3

最も簡潔な方法(ただし、必ずしも最良とは限りません)は DateFormatter .

let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")

ユニコード技術標準では、他のフォーマット その DateFormatter がサポートしています。

注意事項

参照 回答 は、日付と時刻を読みやすい形式で表示する方法です。また、これらの優れた記事もお読みください。