UIDatePicker给错误的时间

可能重复:
从[NSDatedate]closures几个小时
NSDatedate不给我正确的时间

我有这段代码:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"HH:mm"]; NSString *formattedDateInString = [formatter stringFromDate:[self.datePicker date]]; NSLog(@"This is the formatted date (STRING) ---> %@" ,formattedDateInString); self.fromHourLabel.text = formattedDateInString; NSDate *date = [formatter dateFromString:formattedDateInString]; NSLog(@"This is the date (NSDate) ---> %@" ,date); self.fromHour = date; 

我基本上从UIDatePicker获取date,将小时和分钟设置为标签文本,并将date保存到名为fromHour的属性中。 在-viewDidLoad方法中,我也有:

 self.datePicker.timeZone = [NSTimeZone localTimeZone]; 

这是输出:

在这里输入图像说明

正如你所看到的,用这个代码,我有两个主要的问题:

  • 第一个输出是17.30,第二个是16:30(第一个输出是正确的,第二个是错误的),为什么?
  • 第二个输出格式为“yyyy-MM-dd HH:mm:ss”,但我只需要“HH:mm”。

你可以帮我吗?

我知道有几十个现有的问题,但我找不到。

问题很简单。 当您使用NSLog或包含%@格式description的string格式打印对象时,将在该对象上调用description方法。

NSDatedescription方法始终使用祖鲁时区(+0000)显示完整date。

如果你想要一个特定的格式打印date,然后使用NSDateFormatter转换为一个string,并打印string。

编辑:根据评论的信息,这里的问题的一部分是,你从适当的NSDate开始。 然后将其转换为格式为HH:mm的string。 然后,您从该string中创build一个新的NSDate 。 更好的解决scheme是简单地保存原始date并避免创build第二个date。