- (NSDate *)getNowDateFromatAnDate:(NSDate *)anyDate
{//设置源日期时区NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];//或GMT//设置转换后的目标日期时区NSTimeZone* destinationTimeZone = [NSTimeZone localTimeZone];//得到源日期与世界标准时间的偏移量NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:anyDate];//目标日期与本地时区的偏移量NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:anyDate];//得到时间偏移量的差值NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;//转为现在时间NSDate* destinationDateNow = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:anyDate] autorelease];return destinationDateNow;
}

例子演示:我的机器是北京时区东八区。

//2013-08-03T12:53:51+0800     UTC时间格式下的北京时间,可以看到北京时间= UTC + 8小时。

NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];

NSDate *localDate = [dateFormatter dateFromString:@"2013-08-03T04:56:52+0000"];      +0000 表示的是当前时间是个世界时间。

[dateFormatter release];

NSLog(@"now Time = %@",[selfgetNowDateFromatAnDate:localDate]);

结果:

2013-08-03 12:57:33.391 xxxx[2547:c07] now Time = 2013-08-03 12:56:52 +0000


 以上注意一点,在转出来后带的时间是原参数anydate的时区,因此切不可再用NSDateFormatter 转换。否则会多增加一个时区的时间值。应该使用如下来提取字符串


NSString *str = [NSStringstringWithFormat:@"%@",[selfgetNowDateFromatAnDate:localDate]];

NSLog(@"str = %@",str);

注NSDate对象存放的日期始终是UTC的标准时间,可以根据这个时间进行其它时间的转换。因此上面算出来的时间中时区为 +0000,如果此时再转为字符串

几个转换函数

//NSString 2 NSDate

- (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;

}

//NSDate 2 NSString

- (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;

}

//将本地日期字符串转为UTC日期字符串
//本地日期格式:2013-08-03 12:53:51
//可自行指定输入输出格式
-(NSString *)getUTCFormateLocalDate:(NSString *)localDate
{NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//输入格式[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];NSDate *dateFormatted = [dateFormatter dateFromString:localDate];NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];[dateFormatter setTimeZone:timeZone];//输出格式[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];NSString *dateString = [dateFormatter stringFromDate:dateFormatted];[dateFormatter release];return dateString;
}//将UTC日期字符串转为本地时间字符串
//输入的UTC日期格式2013-08-03T04:53:51+0000
-(NSString *)getLocalDateFormateUTCDate:(NSString *)utcDate
{NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//输入格式[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];NSTimeZone *localTimeZone = [NSTimeZone localTimeZone];[dateFormatter setTimeZone:localTimeZone];NSDate *dateFormatted = [dateFormatter dateFromString:utcDate];//输出格式[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];NSString *dateString = [dateFormatter stringFromDate:dateFormatted];[dateFormatter release];return dateString;
}

- (NSString *)getUTCFormatDate:(NSDate *)localDate

{

NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];

NSTimeZone *timeZone = [NSTimeZonetimeZoneWithName:@"UTC"];

[dateFormatter setTimeZone:timeZone];

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

NSString *dateString = [dateFormatter stringFromDate:localDate];

[dateFormatter release];

return dateString;

}

- (NSDate *)getLocalFromUTC:(NSString *)utc

{

NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];

NSTimeZone *timeZone = [NSTimeZonelocalTimeZone];

[dateFormatter setTimeZone:timeZone];

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

NSDate *ldate = [dateFormatter dateFromString:utc];

[dateFormatter release];

return ldate;

}

//以上注意字符串时的输入参数的格式,别外不要用%@来查看NSDate的值,因为本身存的就是UTC ,小心被误倒。将期转换出字符串来查看一下。

IOS 世界标准时间UTC /GMT 转为当前系统时区对应的时间相关推荐

  1. UTC世界标准时间、GMT格林尼治标准时间、中国标准时间北京时间

    遇到的现象 let newObj = JSON.parse(JSON.stringify(obj)),假设对象obj有属性time: 如果time的值是new Date(), 则newObj得到的拷贝 ...

  2. CST,CET,UTC,GMT,DST,Unix时间戳几种常见时间概述与关系

    1.UTC: Universal Time Coordinated 协调世界时,又称世界标准时间 多数的两地时间表都以GMT来表示,但也有些两地时间表上看不到GMT字样,出现的反而是UTC这3个英文字 ...

  3. GMT-8 GMT+8 GMT CST及系统时区查看、修改

    配置android设备时间时,发现配置时间为03:16:31 GMT-8,而服务器端时间为19:16:15 CST,而当前时间确实为19:24:15,经查资料有以下解释: GMT(Greenwich ...

  4. CentOS 修改系统时区和更新时间

    修改时区 新安装 centOS 系统后,可能会出现由于时区问题,导致时间与现有正常时间相差 8 个小时的情况.我们可以通过相应的命令来重新设置时区. [root@master ~]# timedate ...

  5. web系统时区不一致导致时间显示异常的解决方案

    先说一下场景,一般在国内,我们都用的东八区时间,部署系统的时候,如果操作系统的时区也初始化为Asia/Shanghai,这样节点上所有的服务时区默认都会跟操作系统保持一致,用户访问系统页面时,展示的时 ...

  6. Ubuntu20 修改系统时区为 国内时间

    问题: 一般情况下,Ubuntu时间与实际时间相差8小时,因为他的时区设置为0时区,而我们想让他为北京时间. 校正方法如下: 运行tzselect,选择Asia(亚洲) root@computer:~ ...

  7. C#令人迷惑的DateTime:世界标准时间还是本地时间?

    先来看一段代码: 复制内容到剪贴板程序代码 DateTime time = DateTime.Parse("2013-07-05 00:00:00"); Console.Write ...

  8. UTC GMT EST CST 区别

    文章目录 简介 引用 简介 UTC GMT EST PST 各种时间标准傻傻分不清 GMT (Greenwich Mean Time)的缩写,指的是皇家格林威治天文台的标准时间,称作格林威治时间,因为 ...

  9. 世界标准时间yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX详解

    背景 对于带有时区的时间,国内很多程序员实际开发场景中运用的很少,如果你的业务只是在国内,就是以北京时间为准,世界时间称为东八区时间. 如果你的业务是国际业务,就需要考虑时间,因为你要面对不同的国家用 ...

最新文章

  1. 斯坦福大学深度学习与自然语言处理第一讲:引言
  2. Ensemble learning(集成学习)
  3. Tomcat、JBOSS、WebSphere、WebLogic、Apache之间的区别
  4. RavenDb学习(十)附件,存储大对象
  5. hdu1276 士兵队列训练问题-list容器
  6. 签字后被开除_员工虚假报销公司可以开除吗?
  7. java timmer模式配置_使用java配置定时任务的几种配置方式及示例
  8. Oracle 分页查询
  9. TCP 半连接队列和全连接队列满了,怎么破?
  10. Rasa课程、Rasa培训、Rasa面试系列之:Rasa客户案例Dialogue公司
  11. 图解机器学习算法(8) | 回归树模型详解(机器学习通关指南·完结)
  12. donet 微服务开发 学习-熔断降级 Polly
  13. C语言数字图像处理---1.3 图像直方图
  14. 高数_第2章多元函数微分学__偏导数的几何应用_空间曲线的切线与法平面
  15. C语言头歌educoder实训作业答案分享 指针(一)
  16. python球的表面积和体积代码_C语言求球的表面积和体积
  17. php7 yar扩展,php扩展之Yar使用
  18. 宽带和下载速度(下载速率)之间的区别
  19. 多年的人工智能安全机制争议 检察官、行刑者与道德家这么表示
  20. 工业强国机械制造增长新方向 工业机器人产业发展迅速

热门文章

  1. 计算机毕业设计django基于python企业资产管理系统
  2. 如何制定 - 测试计划和策略 (详细讲解)
  3. linux云自动化系统运维19(磁盘阵列raid,lvm管理)
  4. 抖音、腾讯世纪大和解,透露了哪些信息?
  5. 一起学爬虫(Python) — 10
  6. Libevent教程001: 简介与配置
  7. 2018年EI收录中文期刊目录【转】
  8. Unity Toon Shader 卡通着色器(一):卡通着色
  9. 基于spark的流式数据处理—批处理和流处理区别
  10. 「兔了个兔」福兔贺春,纯CSS实现超精美月兔404界面(附源码)