文書   >   Foundation   >     Dates and Times   >   DateFormatter


クラス


DateFormatter


日付とそのテキスト表現とを変換するフォーマッタです。





概要


DateFormatter のインスタンスは、NSDate オブジェクトの文字列表現を作成し、日付と時間のテキスト表現を NSDate オブジェクトに変換します。DateFormatter には、ユーザーに日付と時間を見えるように表現するために、さまざまなローカライズされたプリセットと構成オプションを提供してています。日付と時間の固定書式表現では、カスタムの書式文字列を指定できます。


ISO 8601 書式の日付表現を使用する場合は、代わりに ISO8601DateFormatter を使用してください。


2 つの NSDate オブジェクト間の間隔を表すには、代わりに DateIntervalFormatter を使用して下さい。


NSDateComponents オブジェクトで指定された時間の量を表すには、代わりに DateComponentsFormatter を使用して下さい。


ユーザーに見える日付と時間の表現を使用


ユーザーに日付を表示するときは、必要に応じて日付フォーマッタの dateStyle プロパティと timeStyle プロパティを設定して下さい。たとえば、時間を表示せずに月、日、年を表示する場合は、dateStyle プロパティを DateFormatter.Style.long に設定し、timeStyle プロパティを DateFormatter.Style.none に設定します。逆に、時間だけを表示したい場合は、dateStyle プロパティを DateFormatter.Style.none に設定し、timeStyle プロパティを DateFormatter.Style.short に設定します。DateFormatter は、dateStyle プロパティと timeStyle プロパティの値に基づいて、与えられたロケールに適した、指定された日付の表現を提供します。



let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none

let date = Date(timeIntervalSinceReferenceDate: 118800)

// US English Locale (en_US)
dateFormatter.locale = Locale(identifier: "en_US")
print(dateFormatter.string(from: date)) // Jan 2, 2001

// French Locale (fr_FR)
dateFormatter.locale = Locale(identifier: "fr_FR")
print(dateFormatter.string(from: date)) // 2 janv. 2001

// Japanese Locale (ja_JP)
dateFormatter.locale = Locale(identifier: "ja_JP")
print(dateFormatter.string(from: date)) // 2001/01/02



事前に定義されたスタイルを使用して達成できない書式を定義する必要がある場合は、setLocalizedDateFormatFromTemplate(_:) を使用して、テンプレートからローカライズされた日付書式を指定できます。



let dateFormatter = DateFormatter()
let date = Date(timeIntervalSinceReferenceDate: 410220000)

// US English Locale (en_US)
dateFormatter.locale = Locale(identifier: "en_US")
dateFormatter.setLocalizedDateFormatFromTemplate("MMMMd") // set template after setting locale
print(dateFormatter.string(from: date)) // December 31

// British English Locale (en_GB)
dateFormatter.locale = Locale(identifier: "en_GB")
dateFormatter.setLocalizedDateFormatFromTemplate("MMMMd") // // set template after setting locale
print(dateFormatter.string(from: date)) // 31 December



固定書式の日付表現での作業


重要

MacOS 10.12 以降または iOS 10 以降では、ISO 8601 の日付表現を扱うときには ISO8601DateFormatter クラスを使用して下さい。



RFC 3339 などの固定書式の日付で作業する場合は、dateFormat プロパティを設定して書式文字列を指定します。ほとんどの固定書式では、locale プロパティーも POSIX ロケール ("en_US_POSIX") に設定し、timeZone プロパティーを UTC に設定する必要があります。



let RFC3339DateFormatter = DateFormatter()
RFC3339DateFormatter.locale = Locale(identifier: "en_US_POSIX")
RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
RFC3339DateFormatter.timeZone = TimeZone(secondsFromGMT: 0)

/* 39 minutes and 57 seconds after the 16th hour of December 19th, 
1996 with an offset of -08:00 from UTC (Pacific Standard Time) */
let string = "1996-12-19T16:39:57-08:00"
let date = RFC3339DateFormatter.date(from: string)



詳細については、テクニカルQ&A QA1480"NSDateFormatter とインターネットの日付" を参照してください。


スレッドの安全性


iOS 7 以降では、NSDateFormatter はスレッドセーフです。


MacOS 10.9 以降では、64ビットアプリで最新の動作を使用している限り、NSDateFormatter はスレッドセーフです。


以前のバージョンのオペレーティングシステムでは、または過去の書式の動作を使用している場合や、macOS で 32 ビットで動作している場合、NSDateFormatter はスレッドセーフではないため、複数のスレッドから同時に日付フォーマッタを変更してはいけません。


トピックス





オブジェクトの変換





書式とスタイルの管理





属性の管理





動作バージョンの管理





自然言語のサポートの管理





AM と PM のシンボルの管理





平日のシンボルの管理





月のシンボルの管理





四半期のシンボルの管理





紀元のシンボルの管理





定数





インスタンスプロパティ


関連





以下からの継承


Formatter





以下への準拠


以下も見よ





日付の書式設定





目次
Xcode の新機能

  • 言語:Swift
  • SDK:
  • iOS 2.0+
    macOS 10.0+
    tvOS 9.0+
    watchOS 2.0+
  • フレームワーク
  • Foundation
  • 概要
  • トピックス
  • 関連
  • 以下も見よ












  • トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)












    トップへ(Foundation)