xcode timePicker返回错误的时间

时间:2012-08-14 20:07:27

标签: xcode datepicker datetimepicker

我遇到了时间选择器的问题,无法弄清楚我的问题是什么。这是我的代码;

timePicker.timeZone = [NSTimeZone localTimeZone];
NSDate *selected = [timePicker date];

NSString *message = [[NSString alloc] initWithFormat:
                     @"The date and time you selected is: %@", selected];
UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Date and Time Selected"
                      message:message
                      delegate:nil
                      cancelButtonTitle:@"Yes, I did."
                      otherButtonTitles:nil];
[alert show];

例如,如果我选择下午2:55的时间,警报将返回" 2012-08-14 19:55:37 + 0000"

它必须是超级简单的东西才能看到它

2 个答案:

答案 0 :(得分:4)

NSDate没有时区概念。它只存储中性时间信息。因此,您必须更正输出以进行补偿。

您可以创建NSDateFormatter的实例,然后设置TimeTime:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"..."];

//Timezone!
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];

NSString *dateSting = [dateFormatter stringFromDate:myDate];

答案 1 :(得分:0)

您需要在UTC和您所在的国家/地区时区之间添加时间间隔差异:

(sender.date as NSDate).addingTimeInterval(TimeInterval(NSTimeZone.local.secondsFromGMT()))