android 时间戳 时区,三句话理解时区与时间戳

从不浪费时间的人,没有工夫抱怨时间不够。 —— 杰弗逊

第一句话:时间戳

时间不分东西南北、在地球的每一个角落都是相同的。他们都有一个相同的名字,叫时间戳。时间戳 指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。

关于 时间戳, 你可以看在线时间戳

第二句话:时区

时间戳 在地球的每一个角落都是相同的,但是在相同的时间点会有不同的表达方式,所以有了另外一个时间概念,叫时区。这里的时区与地区不是同一个概念,例如我们所在的时区叫 东八区 。

在设备中,可以自己手动的切换当前的系统时区:

bf47458a0423

时区设置

你会发现:当你选在不同的时区,你的当前时间是不一样的。

第三句话:时间戳与时区在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);

}

打印结果如下:

bf47458a0423

打印完美结果

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、想了一下,没有其它的需要补充了,都太简单。

谢谢~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下的diskpart指令彻底格式化清除U盘

参考:windows下的diskpart指令修复U盘分区 作者:丶PURSUING 发布时间:2021-02-02 09:38:55 网址:https://blog.csdn.net/weixin_44742824/article/details/113537038?spm1001.2014.3001.5501 参考:原文链接 作者&…

简述控制反转ioc_讲一下你理解的 DI 、IoC、DIP ?

作者 | 木小楠链接 |cnblogs.com/liuhaorain/p/3747470.html摘要面向对象设计(OOD)有助于我们开发出高性能、易扩展以及易复用的程序。其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC、DI以及Ioc容器等概念。本文我们将一起学习这些概…

Zimbra高级应用之-双向证书认证(一)

使用zimbra作为企业邮件服务器的公司,可能会遇到这样一种情况:使用用户名密码的传统认证方法,经常会发现有人恶意登录用户邮箱,采取暴力 破解,不断尝试登录密码。同时,简单密码组合很轻易被破解。从而在未经…

Redis学习与实战之字符串命令

字符串命令 一、基本字符串命令 1.基本字符串操作命令(设置、取值、删除、取长度) 命令名称命令功能执行时间复杂度Set为指定的一个键设置对应的值,如果已经存在,则直接覆盖原来的值O(1)Mset对多个键设置对应的值,如果值已经存在,…

html模糊遮罩层磨砂玻璃,常见的PPT背景:如何设计PPT背景?

第一种:纯色背景纯色背景分为两类,一种为黑白灰等“无色”背景,另一种就是彩色背景。黑白灰等无色背景,是安全的背景,容易配色,所以在使用上最多,如果没有色彩基础的朋友,建议还是用…

linux分文件编程、静态库与动态库

参考:linux静态库与动态库编程 作者:丶PURSUING 发布时间:2021-02-02 16:51:49 网址:https://blog.csdn.net/weixin_44742824/article/details/113539449?spm1001.2014.3001.5501 目录一、分文件编程的引入优点实现二、库的概念什…

十万个为什么儿童版_《虹猫蓝兔十万个为什么》上架爱奇艺奇巴布绘本馆

虹猫蓝兔绘本《虹猫蓝兔十万个为什么》上架爱奇艺奇巴布绘本馆全套专区。《虹猫蓝兔海底历险记》在爱奇艺PC端首页推广。红网时刻6月11日讯(记者 胡邦建 )今日,记者从湖南漫联卡通文化传媒有限公司获悉,该公司旗下的虹猫蓝兔绘本《虹猫蓝兔十万个为什么》…

获取${}中的值? 比如说var a=${date },无法取出date中的值

https://zhidao.baidu.com/question/2079297372778181268.html 转载于:https://www.cnblogs.com/DixinFan/p/9221953.html

GNU make manual 翻译( 一百四十九)

继续翻译 5.7.4 The --print-directory Option ------------------------------------If you use several levels of recursive make invocations, the -w or --print-directory option can make the output a lot easier to understand by showing each directory as make sta…

创文html5作品,【《创文故事》纪录短片入围作品展播之七】引路人

剧情简介:他只是一名普普通通的教师,却每天风雨无阻地为学生引导起上学放学的路。而这一切,没有一分钱,也没有一分利。他以身作则,用自己的行动感染了周围的人:从一开始的几个人,发展到现在几百…

树莓派外设开发基础(wiringPi库)

参考:树莓派外设开发基础篇 作者:丶PURSUING 发布时间:2021-02-05 18:20:53 网址:https://blog.csdn.net/weixin_44742824/article/details/113673019?spm1001.2014.3001.5501 目录外设开发综述及wiringPi库是什么如何获取如何使…

html仿百度页面代码_百度优化需要注意的4点

百度优化的技术很多,需要根据行业特点进行开拓和挖掘。还需要有多年的网络营销服务经验,进行网站分析、关键词分析、同行竞争分析,优化开始后监视网站流量数据。所以百度优化需要注意的4点如下:(1)页面优化。页面质量不高&#xf…

网页版计算器

网页版计算器 http://files.cnblogs.com/voidobject/%E7%BD%91%E9%A1%B5%E5%BD%A2%E5%BC%8F%E7%9A%84%E8%AE%A1%E7%AE%97%E5%99%A8.rar转载于:https://www.cnblogs.com/voidobject/archive/2012/10/04/2711642.html

android导航屏幕,发现具有软件导航栏的Android设备的真实屏幕尺寸(以像素为单位)...

我需要能够知道屏幕的确切大小,不包括软件导航栏.我正在使用andengine来制作游戏.我们希望全力支持新的Nexus系列(4,7和10)根据许多人指出的this page,软件导航栏的大小应为48dp.然后使用this优秀stackexchange帖子上的信息我收集了用于计算软件导航栏大小的公式应该是&#xf…

清除浮动小记,兼容Ie6,7

.clearfix { *zoom:1;}.clearfix:after{clear:both; display:block; height:0; visibility:hidden; line-height:0; content:\20;}转载于:https://www.cnblogs.com/chenhuichao/p/9223571.html

antd vue 多个下拉 联动_Antd下拉选择,自动匹配功能的实现

我就废话不多说了,大家还是直接看代码吧~placeholder"客户名称"showSearchoptionFilterProp"children"//自动匹配输入onChange{this.selectChange}>{this.state.selectCustomer}补充知识:antd select如何支持既能输入不存在的选项…

树莓派串口通信

目录相关概念简述半双工与全双工串口通信注重什么串口通信编程常用API初次使用需要配置树莓派和电脑串口之间读、写、交互接线编写程序其他简单了解为什么说linux一切皆文件查找文件是否存在相关概念 简述半双工与全双工 全双工允许通信双方同时互传数据;半双工不…

英文环境下中文输入法的设置

英文环境下使用ibus输入法 centos安装的时候已经选择了中文支持,输入法也已经安装,但在英文环境下面竟然无法使用中文输入法,解决办法记录于此, 1.安装ibus(centos6以后已经默认安装) #yum install ibus(已经安装了中文…

html把实线变成虚线,Html5 Canvas 绘制虚线和实线的切换方法

场景应用:1需朋者说上事是础一发一开程和开数的目前间)、最开始默认绘制的都新直能分支调二浏页器朋代说,事刚是实线。var canvas document.getElementById("canvas");var context canvas.getContext("2d");context.strokeStyle …

React引入,运行

1.引入 <script src"https://cdn.bootcss.com/react/15.5.4/react.min.js"></script> <script src"https://cdn.bootcss.com/react/15.5.4/react-dom.min.js"></script> <script src"https://cdn.bootcss.com/babel-stand…