gpt4 book ai didi

objective-c - UIDatePicker 时区问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:20 68 4
gpt4 key购买 nike

我遇到了一个关于 UIDatePicker 的奇怪问题。我正在尝试制作一个允许我根据其他时区设置提醒的应用程序。 IE。在纽约下午 4 点提醒我。

当使用 UIDatePicker 时,返回的 NSDate 对象始终是手机时区中的选定时间,转换为 UTC。不考虑将时区或日历属性设置为另一个时区。

这是我的代码!

NSLog(@"Date: %@", [datePicker date]);
NSLog(@"DatePicker TimeZone: %@", [datePicker timeZone]);
NSLog(@"Calendar TimeZone: %@", [datePicker.calendar timeZone]);

NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"America/New_York"];

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[cal setTimeZone:timeZone];
NSLog(@"New Calendar TimeZone: %@", [cal timeZone]);

NSLog(@"Updating timezones");
[datePicker setTimeZone:timeZone];
[datePicker setCalendar:cal];


NSLog(@"Date: %@", [datePicker date]);
NSLog(@"DatePicker TimeZone: %@", [datePicker timeZone]);
NSLog(@"Calendar TimeZone: %@", [datePicker.calendar timeZone]);

输出...

2012-11-09 14:13:04.834 DatePickerTest[4524:c07] Date: 2012-11-09 03:12:59 +0000
2012-11-09 14:13:04.835 DatePickerTest[4524:c07] DatePicker TimeZone: (null)
2012-11-09 14:13:04.837 DatePickerTest[4524:c07] Calendar TimeZone: Australia/Sydney (GMT+11:00) offset 39600 (Daylight)
2012-11-09 14:13:04.837 DatePickerTest[4524:c07] New Calendar TimeZone: America/New_York (EST) offset -18000
2012-11-09 14:13:04.837 DatePickerTest[4524:c07] Updating timezones
2012-11-09 14:13:04.882 DatePickerTest[4524:c07] Date: 2012-11-09 03:12:59 +0000
2012-11-09 14:13:04.882 DatePickerTest[4524:c07] DatePicker TimeZone: America/New_York (EST) offset -18000
2012-11-09 14:13:04.883 DatePickerTest[4524:c07] Calendar TimeZone: America/New_York (EST) offset -18000

第一行返回的NSDate是正确的,是悉尼14:12的UTC时间,但是更改时区和日历后,返回的日期还是基于悉尼是 14:12,纽约不是 14:13。

最佳答案

在 Swift 4 中,您可以通过以下操作更改 UIDatePicker 的时区:

datePickerMode 设置为 dateAndTime,以根据时区查看时间datePicker.datePickerMode = .dateAndTime

用你想要的时区创建常量 timeZone

let timeZone = TimeZone.init(identifier: "America/New_York")

执行可选绑定(bind),因为时区包含可选值。

guard let newTimeZone = timeZone else {return}

将newTimeZone设置为datePicker.timeZone

datePicker.timeZone = newTimeZone

关于objective-c - UIDatePicker 时区问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301678/

68 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com