2

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

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”

它必须是超级简单的东西,只是看不到它

4

2 回答 2

4

NSDate 没有时区的概念。它只存储中性时间信息。所以你必须纠正你的输出来补偿。

你可以创建一个 NSDateFormatter 的实例,然后 setTimeZone:

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

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

NSString *dateSting = [dateFormatter stringFromDate:myDate];
于 2012-08-14T20:18:21.090 回答
0

您需要添加 UTC 和您所在国家/地区时区之间的时间间隔差异,您可以通过以下方式实现:

(sender.date as NSDate).addingTimeInterval(TimeInterval(NSTimeZone.local.secondsFromGMT()))
于 2017-12-07T10:37:09.737 回答