android 时间戳 时区,三句话理解时区与时间戳
从不浪费时间的人,没有工夫抱怨时间不够。 —— 杰弗逊
第一句话:时间戳
时间不分东西南北、在地球的每一个角落都是相同的。他们都有一个相同的名字,叫时间戳。时间戳 指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
关于 时间戳, 你可以看在线时间戳
第二句话:时区
时间戳 在地球的每一个角落都是相同的,但是在相同的时间点会有不同的表达方式,所以有了另外一个时间概念,叫时区。这里的时区与地区不是同一个概念,例如我们所在的时区叫 东八区 。
在设备中,可以自己手动的切换当前的系统时区:
时区设置
你会发现:当你选在不同的时区,你的当前时间是不一样的。
第三句话:时间戳与时区在Code中应用
一、时间戳 是不会跟着 时区 的改变而改变
可以用代码来证明这一点:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// 系统时区
NSTimeZone* timeZone = [NSTimeZone systemTimeZone];
NSLog(@"系统当前的时区: %@", timeZone.name);
// 返回的单位是 秒
NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970] ;
NSLog(@"当前时间戳:%f", timeInterval);
}
你会发现,不管怎么切换时区,时间戳总是一致。可以实时的参照在线时间戳进行验证。
二、不同 时区 间的时间切换
这个需求并不是空穴来风,在很多的app中都会用到的。比如根据服务器返回的时间与当前时间进行一个比较,这里就会有多种可能性,主要体现在服务器返回时间的方式,比如直接返回一个固定时间的字符串,比如:2017-06-14 22:55:23。然后接口的同事告诉你这个是 东八区 时间。让你自己转成当前 时区 的时间。
1、将当前 时区 的时间转成不同 时区 的时间
不管当前设备的 时区 在什么地方,都将其转成 东八区 的时间格式。代码如下:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// 系统时区,默认就是当前的时区
NSTimeZone* timeZone = [NSTimeZone systemTimeZone];
NSLog(@"系统当前的时区: %@", timeZone.name);
// 获取当前时间
NSDate* date = [NSDate date];
// 时间格式
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString* now = [dateFormatter stringFromDate:date];
NSLog(@"系统当前时间显示: %@", now);
// 将时区设置成 东八区
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8*3600]];
// 设置后的时间显示
now = [dateFormatter stringFromDate:date];
NSLog(@"东八区的当前时间显示: %@", now);
}
打印结果如下:
打印完美结果
2、2017-06-08T11:29:29.209Z
当有一天你发现服务器返回这样的时间,请不要束手无策,因为这个时间格式就已经明确的将时区也告诉你了,你只需要这样做,就能随时随地的转成当前时区的时间格式:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// 时间字符串 (带有时区信息)
NSString* timeTEXT = @"2017-06-08T11:29:29.209Z";
// 对应时间格式
NSString* formateTEXT = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:formateTEXT];
// 获取当前对应时区的时间
NSDate* curDate = [dateFormatter dateFromString:timeTEXT];
NSLog(@"对应当前时区的时间: %@", curDate);
}
上面的代码,没有看到有 时区 间的切换,但是是正确的。因为timeTEXT已经自带时区 信息。然而 NSDateFormatter 对象默认是当前设备的 时区。所以 curDate 就是当前设备的时间。
3、想了一下,没有其它的需要补充了,都太简单。
谢谢~
android 时间戳 时区,三句话理解时区与时间戳相关推荐
- Android 如何清空 Canvas 清屏只需三句话
android开发--Canvas清屏只需三句话 分类: Android开发 2012-11-28 21:51 4269人阅读 评论(19) 收藏 举报 这两三天一直在研究这个问题,今天终于成功了.我 ...
- android开发--Canvas清屏只需三句话
这两三天一直在研究这个问题,今天终于成功了.我最终要实现的效果是,类似于照相机照相时,第一次按下按键,会出现矩形框框住人脸,这时我不想照相,再次按下会再次框出人脸,重新画个新的矩形框. 就这么简单. ...
- 生活感悟——我对三句话的理解
生活感悟-我对三句话的理解 brycezou@163.com 1.不要试图从一开始就建立一个完美的数据仓库 说这句话是有前提的,那就是充分结合当前的业务和短期将来的业务,建立一个适用于现在和短期将来的 ...
- 三句话感受一本书,让脑子变聪明的7本书,每本只需理解3句话!
三句话感受一本书,让脑子变聪明的7本书,每本只需理解3句话! 一.<学会提问> 批判性思维领域的"圣经" 信息爆炸的年代,尤其需要我们对信息的判断力. 三句话感受这本书 ...
- 面试者被公司粗暴对待,进门讲了三句话被赶出:包括一句你好
对于职场上的人而言,找工作是一件比较扎心的事情,特别是在面试环节,内心是最为忐忑的.但是在面试过程中,一些面试者往往处于弱势的一方,用人单位是强势的一方.因此面试者有时候会受到一些不平等的对待,比如下 ...
- 深入浅出Spring Security(一):三句话解释框架原理
三句话解释框架原理 整个框架的核心是一个过滤器,这个过滤器名字叫springSecurityFilterChain类型是FilterChainProxy 核心过滤器里面是过滤器链(列表),过滤器链的每 ...
- 吃透理财三句话人人都能成百万富翁
财专家告诉我们:理财的最佳方式并非追求高超的金融投资技巧,只要你掌握正确的理财观念,并且持之以恒,若干年之后--人人都能成为百万富翁. 我每月到企业举办一小时的免费"理财讲座", ...
- 学做三件事、三句话、三乐、三不要
学做三件事 1 .学会关门 即学会关紧昨天和明天这两扇门,过好每一个今天,每一个今天过得好,就是一辈子过得好. 2.学会计算 即学会计算自己的幸福和计算自己做对的事情.计算幸福会使自己越计算越幸福,计 ...
- 职场低情商就这三句话
蓝豹职业辅导:专注简历制作,就业辅导,模拟面试,职业规划专家! 职场低情商就这三句话 职场低情商就这三句话,职场中想要步步高升,千万不能说这三句话, 第一,不要说不知道, 如果领导问你一个无法回答的问 ...
最新文章
- HTML4如何让一个DIV居中对齐?float输入日志标题
- 6-ML的可行性(3)
- python培训班时间 费用-Python培训班大概多少钱?老男孩Python培训
- Java:Comparable接口
- python class类里给列表排序_python笔记:Class(类)
- C#服务器编程:WebService、Ajax与回调函数(一)
- 编程时程序无错却崩溃_人间真实:程序员的 60 个崩溃瞬间!
- 【CentOS】NFS服务器的安装与配置
- 灰色滤镜,网页灰色代码
- 查询工商单位注册信息 平台
- C语言读取GPT分区信息
- 解决HC05蓝牙模块主从配对失败及AT模式设置方案
- python 知乎 合并 pdf_有什么比较好的 PDF 分割、合并软件?
- 行程卡是怎么记录行程的?
- 萨特《禁闭》由他人来解读“他人即地狱”
- 如何认知MOSFET、IGBT等模拟功率器件
- 【python】算法设计:回文素数
- Python - 获取当前目录/上级目录/上上级目录
- 造纸行业仍处于“去库存”阶段
- 使用python抓取100张人脸图片