开发者社区> 问答> 正文

关于NSDate转换结果失误 的问题

将下面的日期字符串转换成其他格式。操作如下:

NSLog(@"datestring is NOW %@",_dayObject.p_date);
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-DD"];
NSDate *date = [dateFormat dateFromString:_dayObject.p_date];
NSLog(@"date transformed %@",date);
[dateFormat setDateFormat:@"EEEE, dd/MM/YYYY"];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSString *dateStr = [dateFormat stringFromDate:date];
NSLog(@"datestring is AFTER %@",dateStr);

但是在NSLog中得到:

2013-04-18 08:43:36.181 mosaqua2[9629:907] datestring is NOW 2013-05-04
2013-04-18 08:43:36.184 mosaqua2[9629:907] date transformed 2013-01-03 23:00:00 +0000
2013-04-18 08:43:36.184 mosaqua2[9629:907] datestring is AFTER donderdag, 03/01/2013

正确的格式是: Saterday, 04/05/2013

展开
收起
爵霸 2016-03-24 08:09:25 1834 0
1 条回答
写回答
取消 提交回答
  • 仅仅打印获得时间是格林威治时间, 是跟北京时间相差8个小时的 下面这个是我写的代码, 题主可以参考下  // 获取时间戳并且转化成字符串  NSDateFormatter *myFormatter = [[NSDateFormatter alloc]init];  NSDate *myDate = [NSDate date];  // 打印出来的时间是格林威治时间,想差8个小时,但是把这个时间转成字符串就是正确的北京时间  NSLog(@"currentTime is ---- %@", myDate); // 格林威治时间   [myFormatter setDateFormat:@"年月日是:yyyy-MM-dd 时分秒是:HH:mm:ss"];   // 把时间戳转成字符串  NSString *currentTimeStr = [myFormatter stringFromDate:myDate];   NSLog(@"curremtTimeStr is ------%@", currentTimeStr); // 按字符串打印不会有时差
    

    答案来源网络,供您参考

    2019-09-18 15:22:07
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载