objective-c - NSDateFormatter 正在移动 2 小时的日期,为什么?

标签 objective-c ios nsdate

我想将以下 NSString 转换为 NSDate :@"2013-04-01T22:00:00Z"

我正在使用以下代码:

NSString *dateString = @"2013-04-01T22:00:00Z";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *theDate = [dateFormatter dateFromString:dateString];

当我打印 theDate 时,我得到以下答案:2013-04-01 20:00:00 +0000

现在我想知道为什么时间是 20:00 而不是 22:00,你有什么想法吗?

谢谢!

最佳答案

因为您的 dateFormat 没有指定时区,所以 NSDateFormatter 使用您本地的时区。您必须自己设置时区。字符串中的 Z 表示 GMT。

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

关于objective-c - NSDateFormatter 正在移动 2 小时的日期,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10765654/

相关文章:

objective-c - IOS 在 PDF 中嵌入字体

iOS 9 Spritekit 双击在 iPhone 6S 上不起作用

ios - 在模拟内存警告期间销毁 View

iphone - NSDate - 提取时间

objective-c - iOS 中的__weak 和__strong 属性有什么区别?

ios - 从静态库构建 Cocoa Touch 动态框架不会产生二进制文件

iphone - 即使 UIStatusBarHidden 为 YES,如何防止 iOS 5 显示状态栏?

javascript - 如何从网页上的链接打开 native iOS 共享模式?

objective-c - 将 NSDate 类别与 Swift 3 日期类型一起使用

xcode - Swift - 检查日期是否在下周/下月。 ( isDateInNextWeek() isDateInNextMonth() )