ios - NSDateFormatter 添加多余的时间

标签 ios objective-c nsdate nsdateformatter

我正在尝试以 MMMM dd, EEEE 格式获取当前日期。这就是我所做的

NSDate *utc = [[NSDate alloc] init];
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
NSTimeInterval timeZoneSeconds = [[NSTimeZone localTimeZone] secondsFromGMT];
NSDate *DateInLocalTimezone = [utc dateByAddingTimeInterval:timeZoneSeconds];
fmt.dateFormat = @"MMMM dd, EEEE";
NSString *currentDate = [fmt stringFromDate:DateInLocalTimezone];

给定,

  • UTC = 2016-10-07 08:55:55 +0000
  • 时区 = gmt+8
  • DateInLocalTimezone = 2016-10-07 16:55:55 +0000
  • currentDate = 10 月 8 日,星期六

currentDate 必须是 10 月 7 日,星期五。为什么在我设置日期格式时会添加另一天?

最佳答案

NSDateFormatter 已经处理了时区问题。由于您之前向 NSDate 添加了 8 小时,因此您实际上添加了两次 8 小时。

现在,一个提示:

NSDate 是一个时间点。它计算自引用日期以来经过了多少秒(我相信它是格林威治标准时间 1970 年 1 月 1 日 00:00)。如果您确实想引用该点之前或之后的时间,则仅更改 NSDate。将 NSDate 视为时间机器。如果您通过电话与居住在海外的 friend 通话,您可能处于不同的时区,因此时钟显示的时间会有所不同,但你们都处于同一时间点。

如果要处理时区,请使用 NSCalendarNSDateFormatter。他们不仅可以处理时区,还可以处理夏令时和一些东方日历。

关于ios - NSDateFormatter 添加多余的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39913422/

相关文章:

swift - 计算两个日期之间的差异。 swift 1.2

激活时不调用 iOS handleOpenURL??? iOS 5.1(这不是 3.2 的问题)

iPhone - URL 有效性的 Reg Exp

iphone - 将 NSData 转换为 JSON

javascript - 使用复杂的 JavaScript 在 UIWebView 中插入 HTML 的代码片段?

ios - 获取所选月份的天数列表

ios - UITextView _firstBaselineOffsetFromTop 断言失败

ios 对强/弱引用感到困惑

ios - 根据键值查询PFUser(Swift)

iphone - 如何在 Objective-C 中正确格式化该日期?