美文网首页专注iOS开发工具癖IOS 知识积累
iOS时间的时区转换以及一些方法记录

iOS时间的时区转换以及一些方法记录

作者: 那一片阳光 | 来源:发表于2016-09-20 13:54 被阅读5060次

    系统的一些方法

        NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone] secondsFromGMT];
        [NSTimeZone systemTimeZone];//系统所在时区  
        [NSTimeZone defaultTimeZone];//默认时区,貌似和上一个没什么区别 
        [NSTimeZone timeZoneForSecondsFromGMT:0];//这就是GMT+0时区了 
        [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8*60*60]];//直接指定时区,这里是东8区
    

    将时间戳转换成时间

        NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
        NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
        NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
        [objDateformat setDateFormat:@"yyyy-MM-dd HH:mm"];
        self.timeStr = [objDateformat stringFromDate:date];
    

    将0时区时间转换成本地时区的时间

        [formatter setTimeZone:[NSTimeZone systemTimeZone]];
    

    将字符串转换为date

    - (NSDate *)stringToDate:(NSString *)strdate
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSDate *retdate = [dateFormatter dateFromString:strdate];
        [dateFormatter release];
        return retdate;
    }
    

    将date转换为字符串

    - (NSString *)dateToString:(NSDate *)date
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSString *strDate = [dateFormatter stringFromDate:date];
        [dateFormatter release];
        return strDate;
    }
    

    相关文章

      网友评论

      • lemon007:字符串转date,出来的是零时区的,能不能自动加上时区?
        我本善良:不管是字符串转date还是date转字符串,中间是通过dateformatter进行转换的,而且转date系统默认是转为UTC格式也就是0时区。自己测试如下:date转字符串的时候,只有设置dateformatter的timezone为UTC才会原样输出字符串,不管手机的时区是否调整;因为不设置默认dateformatter的时区为手机时区,手机时区在中国一般是东八区,所以会自动减8小时。
      • feng_dev:能给 nsdate 直接设置时区吗、 必须要用 dateformatter 才行吗, nsdate date 出来的只能是 格里尼治的时间吗
        那一片阳光:@Developer_峰 用dateformatter比较方便,我之前用了其他的方式转换,其实是复杂化了!系统默认的时间是格里尼治的时间
      • 码痞: [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];//直接指定时区,这里是东8区


        这就是偏移8秒而已啊
        那一片阳光:@码痞 :joy: 多谢指正
        码痞:@那一片阳光 forSecondsFrom唉,

        这里是文档对这个参数的解释
        seconds The number of seconds by which the new time zone is offset from GMT.
        我们用了(8 * 60 * 60) 才返回了正确结果
        那一片阳光:@码痞 8时 吧

      本文标题:iOS时间的时区转换以及一些方法记录

      本文链接:https://www.haomeiwen.com/subject/kikoettx.html