日付を文字列に変換する
10615 ワード
日付を使用して迅速なコードで表されます
The
一方
int、float、etcなどの文字列表現への変換は簡単ですただし、変換
異なる地理的な領域で使用される異なる日付書式を説明し、ローカライズを処理し、日付を使用するコンテキストを考慮する必要があります.
方法
この記事では、日付を文字列に変換する方法を見ます.一般に、DateFormatterクラスを使用して処理日のすべてのニュアンスを抽象化する方法を見ています.
また、今日のように文字列を変換する方法を参照してください.
日付を文字列に変換
最初にdateインスタンスを作成し、文字列に変換します.
この方法を改善する方法を見てみましょう.
DateFormatterの導入
The
コードを変換するために必要な3ステップを示します
クリエイトア DataStyleを選択します.ここで我々は.ショートスタイル. 呼び出し 我々が選ぶことができる他のdatestylesは、そうです.ミディアム.ロング.フル、そして.なし.
日付を「自然」文字列に変換します
異なるDateStyleプロパティはほとんどの場合よく動作しますが、正式な傾向があります.いくつかの状況では、“自然な”または人間に優しい文字列表現が欲しいかもしれません.私たちは日常会話で使用する言葉.
EGの場合は、次の日あなたの友人に会う予定です.「2020年8月24日に会いましょう」というよりも「明日会えます」と言うかもしれません
DateFormatterは再び救助に来ます.プロパティを設定できます
日付形式へのロケールの効果
これまでのところ、コードサンプルは英語で文字列を返しました.なぜなら、私のmacの現在のロケールが
あなたのロケールに基づいて結果が異なる可能性があります.現在のロケールを検査することで確認できます
日付は、世界のさまざまな部分で異なる方法で表されます.言うまでもなく、同じ地域の中でさえ、日付形式は日付が使われる文脈に基づいて変化します.
ウィキペディアのこの抜粋は、ロケールと日付がどう関連するかを要約します.
例えば、日付01/10/20は米国で2020年1月10日と解釈されます、しかし、インドの同じ日付は2020年10月01日です.
これがどれくらい複雑になるかについての感覚を得るために、このWikipediaページを見てください.https://en.wikipedia.org/wiki/Date_format_by_country
解決策DateFormatter再び.現在、DateFormatterはほぼ900 +のロケールをサポートしています.
サポートされているロケール印刷の完全なリストのために
DateFormatterは、ユーザーの現在のロケールを自動的に取得し、出力を適切にフォーマットします.
ほとんどの場合、デフォルトの動作はユーザが期待しているものであり、変更されるべきではない.
DataFormatterのロケールを変更する場合は、次のようにロケールを設定できます.
エンカウアス
ヒゲイン
デカンド
今日- 2日
--
परसों
渦堤
今日- 1日目
昨日
कल
船尾
今日
今日
आज
シュート
今日は1日目
明日
आने वाला कल
モーゲン
今日は2日
--
आने वाला परसों
発動する
このポストでは、我々は一見単純なタスク-どのように文字列に日付を変換-すぐに複雑になることを見た.
文字列変換への日付は、領域、言語、コンテキストなどに依存します.
書式設定日付に関連するすべての複雑さを考えると、DateFormatterがすべての重いリフティングを行うのがベストです.
それはあなたが拒否することはできませんし、拒否を提供しています.
参考文献
アップル開発者向けドキュメントDate
アップル開発者向けドキュメントDateFormatter
Unicode Common Locale Data Repository
Date
構造The
Date
タイプは、日付で働くことを簡単にします.持続性のような操作を簡単に行うことができますDate
インスタンス、2つの日付を比較するDate
週末などに該当する.一方
Date
タイプはコードの日付で働くために大きいです、彼らはしばしばそれらに対応するように変換される必要がありますString
ユーザーの前に表示されます.int、float、etcなどの文字列表現への変換は簡単ですただし、変換
Date
インスタンスString
表現は些細な仕事ではない.異なる地理的な領域で使用される異なる日付書式を説明し、ローカライズを処理し、日付を使用するコンテキストを考慮する必要があります.
方法
Date
どのように頻繁に我々はそれを操作する必要があります、それを分離する賢明ですDate
取扱いコード.この記事では、日付を文字列に変換する方法を見ます.一般に、DateFormatterクラスを使用して処理日のすべてのニュアンスを抽象化する方法を見ています.
また、今日のように文字列を変換する方法を参照してください.
日付を文字列に変換
最初にdateインスタンスを作成し、文字列に変換します.
let today = Date()
// 2020-08-22 10:50:48 +0000
let strDate = "\(today)"
// 2020-08-22 10:53:05 +0000
生成された日付文字列はすべての情報を持っていますが、それは読むのが簡単でありません、そして、それはあなたがユーザーに表示する何かでありません.この方法を改善する方法を見てみましょう.
DateFormatterの導入
The
DateFormatter
クラス変換Date
対応する物String
表現とバックコードを変換するために必要な3ステップを示します
Date
にString
迅速に.
// Convert string to Date
let dateF = DateFormatter() // 1
dateF.dateStyle = .short // 2
dateF.string(from: today) // 3
// "8/23/20"
DateFormatter
インスタンス.string(from:)
メソッドDateFormatter
インスタンス.
dateF.dateStyle = .medium
dateF.string(from: today)
// "Aug 23, 2020"
dateF.dateStyle = .long
dateF.string(from: today)
// "August 23, 2020"
dateF.dateStyle = .full
dateF.string(from: today)
// "Sunday, August 23, 2020"
日付を「自然」文字列に変換します
異なるDateStyleプロパティはほとんどの場合よく動作しますが、正式な傾向があります.いくつかの状況では、“自然な”または人間に優しい文字列表現が欲しいかもしれません.私たちは日常会話で使用する言葉.
EGの場合は、次の日あなたの友人に会う予定です.「2020年8月24日に会いましょう」というよりも「明日会えます」と言うかもしれません
DateFormatterは再び救助に来ます.プロパティを設定できます
doesRelativeDateFormatting = true
ヴィオラ.
dateF.doesRelativeDateFormatting = true
dateF.string(from: today)
// "Today"
let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: today)!
dateF.string(from: tomorrow)
// "Tomorrow"
let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: today)!
dateF.string(from: yesterday)
// "Yesterday"
日付形式へのロケールの効果
これまでのところ、コードサンプルは英語で文字列を返しました.なぜなら、私のmacの現在のロケールが
en_US
あなたのロケールに基づいて結果が異なる可能性があります.現在のロケールを検査することで確認できます
Locale.current
プロパティ.日付は、世界のさまざまな部分で異なる方法で表されます.言うまでもなく、同じ地域の中でさえ、日付形式は日付が使われる文脈に基づいて変化します.
ウィキペディアのこの抜粋は、ロケールと日付がどう関連するかを要約します.
The legal and cultural expectations for date and time representation vary between countries, and it is important to be aware of the forms of all-numeric calendar dates used in a particular country to know what date is intended.
Wikipedia
例えば、日付01/10/20は米国で2020年1月10日と解釈されます、しかし、インドの同じ日付は2020年10月01日です.
これがどれくらい複雑になるかについての感覚を得るために、このWikipediaページを見てください.https://en.wikipedia.org/wiki/Date_format_by_country
解決策DateFormatter再び.現在、DateFormatterはほぼ900 +のロケールをサポートしています.
サポートされているロケール印刷の完全なリストのために
Locale.availableIdentifiers
プロパティ.DateFormatterは、ユーザーの現在のロケールを自動的に取得し、出力を適切にフォーマットします.
ほとんどの場合、デフォルトの動作はユーザが期待しているものであり、変更されるべきではない.
DataFormatterのロケールを変更する場合は、次のようにロケールを設定できます.
dateF.locale = Locale(identifier: "de")
dateF.string(from: today)
dateF.locale = Locale(identifier: "fr")
dateF.string(from: Date())
dateF.locale = Locale(identifier: "ja_JP")
dateF.string(from: Date())
表:ロケールに基づく日付文字列変換エンカウアス
ヒゲイン
デカンド
今日- 2日
--
परसों
渦堤
今日- 1日目
昨日
कल
船尾
今日
今日
आज
シュート
今日は1日目
明日
आने वाला कल
モーゲン
今日は2日
--
आने वाला परसों
発動する
このポストでは、我々は一見単純なタスク-どのように文字列に日付を変換-すぐに複雑になることを見た.
文字列変換への日付は、領域、言語、コンテキストなどに依存します.
書式設定日付に関連するすべての複雑さを考えると、DateFormatterがすべての重いリフティングを行うのがベストです.
それはあなたが拒否することはできませんし、拒否を提供しています.
参考文献
アップル開発者向けドキュメントDate
アップル開発者向けドキュメントDateFormatter
Unicode Common Locale Data Repository
Reference
この問題について(日付を文字列に変換する), 我々は、より多くの情報をここで見つけました https://dev.to/codecraftblog/converting-dates-to-string-using-swift-1b4lテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol