UIDatePicker 选取日期 差8个小时+0000

获取日期后,发现与实际时间相差8个小时,除了正常的时区问题之外,还有可能是因为你DatePicker的使用方式不当.

通常的时区间隔8小时解决办法:
NSTimeZone *timeZone=[NSTimeZone systemTimeZone];
NSInteger seconds=[timeZone secondsFromGMTForDate:date];
NSDate *newDate=[date dateByAddingTimeInterval:seconds];
NSString *newTimeStr=[formatter stringFromDate:newDate];

但是如果你是由于取出来DatePicker造成这个现象,是因为你获取的dateString后面多了+0000 既英国时区:
输出+0000的原因是
_resultString=[NSString stringWithFormat:@"%@",_datePicker.date];

此时的解决办法是:
//去掉 +0000
NSDate *select = [_datePicker date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
_resultString=[dateFormatter stringFromDate:select];
//计算时差
NSTimeZone *timeZone=[NSTimeZone systemTimeZone];
NSInteger seconds=[timeZone secondsFromGMTForDate:date];
NSDate *newDate=[date dateByAddingTimeInterval:seconds];
NSString *newTimeStr=[formatter stringFromDate:newDate];
就可以完美解决这个问题了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等。解决办法网上比比皆是,但大...
    真巧了_嘿阅读 7,758评论 0 7
  • iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等。解决办法网上比比皆是,但大多...
    小李龍彪阅读 11,519评论 1 6
  • .h文件 #import #define D_MINUTE60 #define D_HOUR3600 #defin...
    屈涯阅读 3,754评论 2 0
  • 近来用到时间空间,整理一些可能用到的处理NSDate的方法和大家分享,有什么不足的欢迎大家补充。 //获取当前时间...
    爱闹的凡阅读 5,195评论 0 0