我正在尝试为预订系统制作一个移动的应用程序。用户可以从不同时区预订产品。因此,当纽约市的用户尝试从巴黎预订产品时,我需要确保用户选择了欧洲/巴黎时区的时间。目前swiftUI日期选择器使用系统当前时区,当然是GMT-5,因此当他们选择13:00时,Date()对象将自己设置为18:00 UTC,但我需要在GMT+1中选择他/她,因此当他们选择13:00时,我应将Date()对象设置为12:00 UTC。我尝试过使用时区的环境值,但它会更改整个应用程序的时区,我只需要更改日期选择器的时区,而不是所有应用程序。以下是我尝试更改时区的解决方案
DatePicker("", selection: $viewModel.tripRequest.date, displayedComponents: .hourAndMinute)
.labelsHidden()
.padding(.horizontal)
.font(.custom("Gilroy-Regular", size: 36))
.cornerRadius(15)
.environment(\.timeZone, TimeZone(secondsFromGMT: 3600)!)
我也试过用内省但没成功
DatePicker("", selection: $viewModel.tripRequest.date, displayedComponents: .hourAndMinute)
.labelsHidden()
.padding(.horizontal)
.font(.custom("Gilroy-Regular", size: 36))
.cornerRadius(15)
.introspectDatePicker { datePicker in
datePicker.timeZone = TimeZone(secondsFromGMT: 3600)
}
1条答案
按热度按时间7gcisfzg1#
默认情况下,SwiftUI的
DatePicker
使用设备的Timezone
。可以使用
.environment(\.timeZone, TimeZone(identifier: "Specific identifier")!)
指定Timezone
但是
Date
是UTC,所以如果用户在一个时区选择了一个日期,而在另一个时区查看它,它将被调整。