1

可能重复:
将日期从 [NSDate 日期] 关闭几个小时
NSDate 日期不给我正确的时间

我有这段代码:

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 获取日期,将 Hours 和 Minutes 设置为标签文本并将日期保存到名为 fromHour 的属性中。在-viewDidLoad方法中我也有:

self.datePicker.timeZone = [NSTimeZone localTimeZone];

这是输出:

在此处输入图像描述

如您所见,使用此代码,我有两个主要问题:

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

你能帮助我吗?

4

1 回答 1

4

我知道有几十个现有问题涵盖了这一点,但我找不到一个。

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

始终使用祖鲁时区 (+0000) 显示完整日期的description方法。NSDate

如果您想以特定格式打印日期,请使用NSDateFormatter转换为字符串并打印字符串。

编辑:根据评论中的信息,这里的部分问题是你从正确的NSDate. 然后,您将其转换为格式为HH:mm. NSDate然后,您从该字符串创建一个新的。更好的解决方案是简单地保存原始日期并避免创建第二个日期。

于 2013-01-27T17:59:03.833 回答