0

我有一个正在更新到 OS4 的应用程序。在这个我使用时间选择器。从这个我想得到一个小时和分钟作为一个整数。这是我以前用于此的代码...

NSDate *selected = [timePicker date];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit| NSMinuteCalendarUnit |NSSecondCalendarUnit;


NSDateComponents *compsDur = [gregorian components:unitFlags fromDate:selected];
int hDur = [compsDur hour];
int mDur = [compsDur minute];
int sDur = [compsDur second];

[gregorian release];

现在一切都在这里正常工作。我的问题是,当我更新到 OS4 时,如果我将手机时间设置更改为从英国到美国,我会得到一个随机值,而不是用户输入的值。

举个具体的例子,在英国时间,我将时间设置为 1 分钟,我得到 mDur 的返回值为 1。如果我将手机更改为纽约时间,我会得到 19 小时 6 分钟?这是怎么回事?

4

1 回答 1

1

我认为这可能与 iOS4 中 UIDatePicker 的未记录更改有关,在该更改中,它默认为(我认为是)GMT 作为时区。

您可以将 UIDatePicker 的时区设置为系统时区,以便用户获得预期的体验。

yourDatePicker.timeZone = [NSTimeZone systemTimeZone];
于 2010-10-03T18:55:58.963 回答