簡単なデートピッカーを作る
var body: some View {
DatePicker(selection: $theDate, label: {Text("日時")})
.padding(50)
}

日本語・和暦表示
DatePicker(selection: $theDate, label: {Text("日時")})
.environment(\.locale, Locale(identifier: "ja_JP"))
.environment(\.calendar, Calendar(identifier: .japanese))
.frame(height: 50)
.padding()
選択できる日付の範囲制限
@State var theDate = Date()
var dateCloseRange: ClosedRange<Date>{
let min = Calendar.current.date(byAdding: .day, value: -7, to: Date())!
let max = Calendar.current.date(byAdding: .month, value: 1, to: Date())!
return min...max
}
var body: some View {
DatePicker(selection: $theDate, in: dateCloseRange, label: {Text("日時")})
.environment(\.locale, Locale(identifier: "ja_JP"))
.frame(height: 50)
.padding()
}
日時データの表示
@State var theDate = Date()
var dateFormat1: DateFormatter {
let df = DateFormatter()
df.locale = Locale(identifier: "ja_JP")
df.dateStyle = .full
df.timeStyle = .short
return df
}
var dateFormat2: DateFormatter {
let df = DateFormatter()
df.locale = Locale(identifier: "ja_JP")
df.calendar = Calendar(identifier: .japanese)
df.dateFormat = "令和yy(YYYY)年M月dd日(E)HH時mm分"
return df
}
var body: some View {
VStack {
Text(dateFormat1.string(from: theDate))
Text(dateFormat2.string(from: theDate))
DatePicker(selection: $theDate, label: {EmptyView()})
.environment(\.locale, Locale(identifier: "ja_JP"))
.frame(width: 200, height: 40)
.padding()
}
}
日付と時刻の2つのコンポーネントに分けて表示
@State var theDate = Date()
var body: some View {
VStack(alignment: .leading, spacing: 10) {
DatePicker("日付", selection: $theDate, displayedComponents: .date)
.environment(\.locale, Locale(identifier: "ja_JP"))
.frame(width: 200)
DatePicker("時刻", selection: $theDate, displayedComponents: .hourAndMinute)
.frame(width: 200)
Text(theDate.description(with: Locale(identifier: "ja_JP")))
.font(.footnote)
}
.padding()
.border(Color.gray, width: 1)
}

これはapple クソすげーわ
どうやって開発してんだこれ?