oOOMIAO 2013-04-18 09:09 采纳率: 10%
浏览 2063
已采纳

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

谢谢您的解答。

  • 写回答

1条回答

  • xiaoyaokk 2013-04-22 07:37
    关注
        NSLog(@"datestring is NOW %@",_dayObject.p_date);
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        NSTimeZone *GTMzone = [NSTimeZone timeZoneForSecondsFromGMT:0];
        [dateFormat setDateFormat:@"YYYY-MM-dd"];
        [dateFormat setTimeZone:GTMzone];
        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);
    

    使用NSDateFormatter转换时间字符串时,默认的时区是系统时区,我们使用的一般都是北京时间(+8)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题