Swift タイムスタンプを取得 - shirajira/family-account-ios GitHub Wiki
Swift タイムスタンプを取得
DateFormatter
を使おう。
公式リファレンス:
DateFormatter | Apple Developer Documentation
実装例
以下は,実行時の時刻を指定のフォーマットに変換した文字列を取得する関数の実装例である。
func timestamp(format: String) -> String {
let now = Date()
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX") // この記述の詳細は注意事項にて
formatter.dateFormat = format
let ret = formatter.string(from: now)
return ret
}
このように使う。
let filename = timestamp(format: "yyyyMMdd-HHmmss") + ".json"
print(filename)
20210507-151550.json
注意事項
端末の設定(一般 > 言語と地域)の「暦法」はユーザ依存となっている。
基本は西暦(グレゴリオ暦)だが,和暦やタイ仏暦も設定可能。
例えばユーザの端末が和暦になっている場合,"yyyy"
で取得できる年は "2021"
ではなく "0003"
になる。(西暦2021年は令和3年)
西暦で統一したほうが都合がよい場合は以下の設定を有効にするとよい。
formatter.locale = Locale(identifier: "en_US_POSIX")
ロケールの設定をしておくことで,ユーザの設定に左右されないフォーマットを維持することができる。
メモ
DateFormatter
のインスタンス生成コストはやや大きいとのこと。
ループ内で繰り返し実行するようなケースでは,インスタンス生成を最初の1回だけにするなど賢く実装しましょう。