- primeira página
- Lista de blogs
- Artigo detalhado
iOS時間ライブラリでタイムスタンプと時間単位を扱う方法
量
量子脆脆鲨
Time Analytics
timestamp
time unit
AMAMAMAM-09-17

iOS時間ライブラリでタイムスタンプと時間単位を扱う方法
iOSアプリ開発では時間処理が頻繁に必要になります。FoundationフレームワークのDate、Calendar、DateComponentsクラスを使うと、効率的に時間を扱えます。
基本の時間操作
現在時刻を取得するにはDate()を使います。UNIXタイムスタンプが必要な場合はtimeIntervalSince1970プロパティを使います。
let now = Date()
let timestamp = now.timeIntervalSince1970
時間のフォーマットにはDateFormatterが便利です。パフォーマンスを考慮して、staticなインスタンスを作成するのがおすすめです。
extension DateFormatter {
static let shared: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return formatter
}()
}
時間計算の方法
Calendarクラスを使うと、日付の加算・減算が簡単にできます。例えば、1週間後の日付を計算するには:
let calendar = Calendar.current
let oneWeekLater = calendar.date(byAdding: .weekOfYear, value: 1, to: Date())
2つの日付の差を計算するにはdateComponentsメソッドを使います:
let startDate = Date()
let endDate = someFutureDate
let components = calendar.dateComponents([.hour, .minute], from: startDate, to: endDate)
時間単位の変換
時間単位を変換するには、MeasurementとUnitDurationが便利です。例えば、秒を時間に変換するには:
let seconds = Measurement(value: 3600, unit: UnitDuration.seconds)
let hours = seconds.converted(to: .hours)
タイムゾーンの扱い
ユーザーのローカルタイムゾーンを考慮するには、TimeZoneを使います。
let timeZone = TimeZone.current
DateFormatter.shared.timeZone = timeZone
パフォーマンスのヒント
- DateFormatterの作成は重い処理なので、再利用しましょう
- 頻繁に使うCalendarインスタンスはキャッシュしましょう
- ISO8601DateFormatterは国際規格の日付処理に最適化されています
よくある問題と解決策
夏時間の切り替わり時期には、1時間のずれが発生することがあります。これを防ぐには:
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
複数のカレンダー(和暦など)を扱う場合、localeの設定が重要です:
calendar.locale = Locale(identifier: "ja_JP")
最新の時間処理
Swift 5.5以降では、新しいClockプロトコルが導入されました。これを使うと、より宣言的に時間を扱えます。
let clock = ContinuousClock()
let duration = clock.measure {
// 時間を計測したい処理
}
時間処理はiOSアプリ開発の基本です。Foundationフレームワークを正しく使えば、複雑な要件も効率的に実装できます。プロジェクトに応じて、適切な方法を選択しましょう。


