IOS 世界标准时间UTC /GMT 转为当前系统时区对应的时间
- (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 转为当前系统时区对应的时间相关推荐
- UTC世界标准时间、GMT格林尼治标准时间、中国标准时间北京时间
遇到的现象 let newObj = JSON.parse(JSON.stringify(obj)),假设对象obj有属性time: 如果time的值是new Date(), 则newObj得到的拷贝 ...
- CST,CET,UTC,GMT,DST,Unix时间戳几种常见时间概述与关系
1.UTC: Universal Time Coordinated 协调世界时,又称世界标准时间 多数的两地时间表都以GMT来表示,但也有些两地时间表上看不到GMT字样,出现的反而是UTC这3个英文字 ...
- GMT-8 GMT+8 GMT CST及系统时区查看、修改
配置android设备时间时,发现配置时间为03:16:31 GMT-8,而服务器端时间为19:16:15 CST,而当前时间确实为19:24:15,经查资料有以下解释: GMT(Greenwich ...
- CentOS 修改系统时区和更新时间
修改时区 新安装 centOS 系统后,可能会出现由于时区问题,导致时间与现有正常时间相差 8 个小时的情况.我们可以通过相应的命令来重新设置时区. [root@master ~]# timedate ...
- web系统时区不一致导致时间显示异常的解决方案
先说一下场景,一般在国内,我们都用的东八区时间,部署系统的时候,如果操作系统的时区也初始化为Asia/Shanghai,这样节点上所有的服务时区默认都会跟操作系统保持一致,用户访问系统页面时,展示的时 ...
- Ubuntu20 修改系统时区为 国内时间
问题: 一般情况下,Ubuntu时间与实际时间相差8小时,因为他的时区设置为0时区,而我们想让他为北京时间. 校正方法如下: 运行tzselect,选择Asia(亚洲) root@computer:~ ...
- C#令人迷惑的DateTime:世界标准时间还是本地时间?
先来看一段代码: 复制内容到剪贴板程序代码 DateTime time = DateTime.Parse("2013-07-05 00:00:00"); Console.Write ...
- UTC GMT EST CST 区别
文章目录 简介 引用 简介 UTC GMT EST PST 各种时间标准傻傻分不清 GMT (Greenwich Mean Time)的缩写,指的是皇家格林威治天文台的标准时间,称作格林威治时间,因为 ...
- 世界标准时间yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX详解
背景 对于带有时区的时间,国内很多程序员实际开发场景中运用的很少,如果你的业务只是在国内,就是以北京时间为准,世界时间称为东八区时间. 如果你的业务是国际业务,就需要考虑时间,因为你要面对不同的国家用 ...
最新文章
- 斯坦福大学深度学习与自然语言处理第一讲:引言
- Ensemble learning(集成学习)
- Tomcat、JBOSS、WebSphere、WebLogic、Apache之间的区别
- RavenDb学习(十)附件,存储大对象
- hdu1276 士兵队列训练问题-list容器
- 签字后被开除_员工虚假报销公司可以开除吗?
- java timmer模式配置_使用java配置定时任务的几种配置方式及示例
- Oracle 分页查询
- TCP 半连接队列和全连接队列满了,怎么破?
- Rasa课程、Rasa培训、Rasa面试系列之:Rasa客户案例Dialogue公司
- 图解机器学习算法(8) | 回归树模型详解(机器学习通关指南·完结)
- donet 微服务开发 学习-熔断降级 Polly
- C语言数字图像处理---1.3 图像直方图
- 高数_第2章多元函数微分学__偏导数的几何应用_空间曲线的切线与法平面
- C语言头歌educoder实训作业答案分享 指针(一)
- python球的表面积和体积代码_C语言求球的表面积和体积
- php7 yar扩展,php扩展之Yar使用
- 宽带和下载速度(下载速率)之间的区别
- 多年的人工智能安全机制争议 检察官、行刑者与道德家这么表示
- 工业强国机械制造增长新方向 工业机器人产业发展迅速