ios - 将字符串日期转换为 NSDate 的问题

标签 ios nsdate

我有这个字符串日期:

2014-04-21T07:55:13Z

当我将其转换为 NSDate 时,我得到的时间是 6:55... 少了 1 小时。为什么?

这是我用来转换的代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *newDate = [dateFormatter dateFromString:dateStr];

newDate 现在是 2014-04-21 06:55:13 +0000 !!!???

出了什么问题?

注意:如果日期是我的本地时间 (GMT+1) 被转换为 GMT,那么少一小时是有意义的。但如果 Z 为零偏移量 (= GMT),则日期已经是 GMT。

最佳答案

我认为您的代码没有错。使用此代码:-

NSString *dateStr = @"2014-04-21T07:55:13Z";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *date = [dateFormat dateFromString:dateStr];

 NSLog(@" date log %@",date); //2014-04-21 02:25:13 +0000 output

// Convert date object to desired output format
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
dateStr = [dateFormat stringFromDate:date];

NSLog(@"string %@",dateStr);  //2014-04-21T07:55:13Z output

但是 NSDATENSLog 根据此 NSDate Format outputting wrong date 输出不正确所以你的代码是正确的。

The NSDate doesn't know anything about formatting (just date information), and the NSDateFormatter doesnt really know anything about dates, just how to format them. So you have to use methods like -stringFromDate: for know that is current or not to actually format the date for pretty human-readable display.

NSLog(@" date is %@",[dateFormat stringFromDate:date]);

关于ios - 将字符串日期转换为 NSDate 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23193230/

相关文章:

android - 无法通过react-native-webview访问相机

ios - 解析请求与刷新

iphone - "current time"转换为 "time in minutes since 00:00"计算帮助

ios - iOS 应用程序中的日期和时间格式

swift - NSDate 比较减少了一天

ios - Sqlite3 查询在 iOS 8.2 下变得非常慢

ios - UITableView cellForRowAt 中的 API 异步调用

objective-c - 从日、月、年生成 NSDate

App收据中的iOS日期格式问题

ios - iOS Notification Service Extension 会从设备中删除附加文件吗?