タイムゾーンとロケール
タイムゾーンやロケールの違いを正しく扱います。
「タイムゾーンとロケール」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
タイムゾーンとロケール
同じDateの時点でも、世界の地域によって表示は異なります。TimeZoneとLocaleが、その解釈方法と表示方法を決定します。
TimeZoneの基礎
TimeZoneは、UTCからの時差と夏時間のルールを表します。TimeZone.currentはデバイスのタイムゾーンです。
import Foundation
let tz = TimeZone.current
print("Identifier present: \(!tz.identifier.isEmpty)")特定のタイムゾーンの作成
TimeZone(identifier:)を使って名前付きのタイムゾーンを構築できます。たとえば、"America/New_York"や"Europe/Istanbul"を指定します。
import Foundation
if let tokyo = TimeZone(identifier: "Asia/Tokyo") {
print("Tokyo offset seconds: \(tokyo.secondsFromGMT())")
}GMTからの時差
secondsFromGMT(for:)は現在の時差を返します。この値は、夏時間の影響で年間を通して変化する場合があります。
import Foundation
let utc = TimeZone(identifier: "UTC")!
print("UTC offset is zero: \(utc.secondsFromGMT() == 0)")タイムゾーンがカレンダーに与える影響
カレンダーのtimeZoneを設定すると、日や時刻の計算にデバイスのデフォルトではなく、その地域のタイムゾーンを使えます。
import Foundation
var cal = Calendar.current
cal.timeZone = TimeZone(identifier: "UTC")!
let hour = cal.component(.hour, from: Date())
print("Hour in UTC between 0 and 23: \(0...23 ~= hour)")フォーマットでのタイムゾーン
Date.FormatStyleに特定のタイムゾーンを設定すると、デバイスの設定に関係なく、その地域を反映した出力を生成できます。
import Foundation
let style = Date.FormatStyle(date: .omitted, time: .shortened)
.timeZone(TimeZone(identifier: "UTC")!)
let s = Date().formatted(style)
print(!s.isEmpty)Localeの基礎
Localeは、言語と地域の慣習を表します。これには、月名、週の始まり、数値や日付の並び順などが含まれます。
import Foundation
let locale = Locale.current
print("Has identifier: \(!locale.identifier.isEmpty)")Localeの作成
Locale(identifier:)を使って、"fr_FR"や"tr_TR"のような特定のロケールを構築できます。
import Foundation
let french = Locale(identifier: "fr_FR")
print("French locale id: \(french.identifier)")Localeによる出力の変化
フォーマットスタイルにロケールを適用すると、月名や並び順が変わります。同じ日付でも、言語によって表示が異なります。
import Foundation
let now = Date()
let style = Date.FormatStyle(date: .long, time: .omitted)
.locale(Locale(identifier: "en_US"))
print(!now.formatted(style).isEmpty)LocaleとCalendarの組み合わせ
Localeは、カレンダーの週の始まりや週番号にも影響します。正確な結果を得るには、タイムゾーン、ロケール、カレンダーを組み合わせてください。
import Foundation
var cal = Calendar(identifier: .gregorian)
cal.locale = Locale(identifier: "en_US")
print("First weekday: \(cal.firstWeekday)")UTCで保存し、現地時刻で表示
ベストプラクティスは、日付をUTCで保存・送信し、表示するときだけユーザーのタイムゾーンとロケールに変換することです。
import Foundation
let instant = Date()
let utcStyle = Date.FormatStyle(date: .numeric, time: .standard)
.timeZone(TimeZone(identifier: "UTC")!)
print("UTC display ready: \(!instant.formatted(utcStyle).isEmpty)")確認問題
地域をまたいで日付を扱う場合、推奨される方法は何ですか?
まとめ
TimeZoneはUTCからの時差と夏時間のルールを設定し、Localeは言語と地域に応じたフォーマットを制御します。どちらもカレンダーとフォーマットスタイルに設定できます。日付はUTCで保存し、表示するときだけ現地のタイムゾーンとロケールに変換してください。これで日付とカレンダーのコースは完了です。
よくある質問
「タイムゾーンとロケール」レッスンは無料ですか?
はい。「タイムゾーンとロケール」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「タイムゾーンとロケール」で何を学びますか?
タイムゾーンやロケールの違いを正しく扱います。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「タイムゾーンとロケール」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Date型と時間間隔
- CalendarとDateComponents
- 日付の書式設定
- タイムゾーンとロケール