iOS开发日记26-详解时间戳

今天博主有一个时间戳的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步.

iOS开发中,我们在很多情况下都会遇到使用当下时间作为参数的情况,这称之为时间戳.在iOSSDK中,与时间戳相关的API主要有三个,NSDate,NSCalendar和NSDate?Components.

NSDate 就是一个绝对的时间,可以换算成相对1970s的时差.

NSCalendar 顾名思义就是日历,封装了系统如何按照年月日的方式来组织时间,组织时间的方式和地区,时区有很大关系.

NSDate?Components 只是一个容器,容器中详细包含了年月日时分等信息.

其中NSDate相信大家用的比较多,就不在这里赘述了,各位看官自行百度,今天主要和大家分享一下NSCalendar和NSDate?Components,下面举几个例子,并贴出代码,让大家能更好的理解.

1.拆分一个时间

NSDate * date = [NSDate date];//当前时间

NSCalendar * calendar = [NSCalendar currentCalendar];//当前用户的calendar

NSDateComponents * components = [calendar components:NSCalendarUnitMinute | NSCalendarUnitMonth | NSCalendarUnitHour | NSCalendarUnitDay fromDate:date];

NSLog(@"%ld月%ld日%ld时%ld分" ,(long)components.month,(long)components.day,(long)components.hour,(long)components.minute);

2.查看今天是在今年的第几周

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDate * currentDate = [NSDate date];

NSInteger week = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitYear forDate:currentDate];

NSLog(@"今天是今年的第%ld周",week);

3.根据拆分时间返回NSDate

NSDateComponents * components = [[NSDateComponents alloc] init];

components.year = 2015;

components.month = 9;

components.day = 28;

components.hour = 14;

components.minute = 38;

components.second = 20;

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDate * date = [calendar dateFromComponents:components];

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy年MM月dd日hh时mm分ss秒";

NSString * str = [formatter stringFromDate:date];

NSLog(@"%@",str);

4.相对时间(现在往后11天10小时)

NSDateComponents * components = [[NSDateComponents alloc] init];

components.day = 11;

components.hour = 10;

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDate * currentDate = [NSDate date];

NSDate * nextData = [calendar dateByAddingComponents:components toDate:currentDate options:NSCalendarMatchStrictly];

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy年MM月dd日hh时mm分ss秒";

NSString * str = [formatter stringFromDate:nextData];

NSLog(@"%@",str);

5.这个月还有多少天

NSCalendar * calendar = [NSCalendar currentCalendar];

NSDate * currentDate = [NSDate date];

NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:currentDate];

6.补充

①.创建不同地区的NSCalendar

initWithCalendarIdentifier:

其中有效的identifer:

NSString * const NSGregorianCalendar;

NSString * const NSBuddhistCalendar;

NSString * const NSChineseCalendar;

NSString * const NSHebrewCalendar;

NSString * const NSIslamicCalendar;

NSString * const NSIslamicCivilCalendar;

NSString * const NSJapaneseCalendar;

NSString * const NSRepublicOfChinaCalendar;

NSString * const NSPersianCalendar;

NSString * const NSIndianCalendar;

NSString * const NSISO8601Calendar;

②.一周的开始日期

firstWeekday

③.地区和时区

locale 和 timeZone

④.所有的NSCalendarUnit

NSEraCalendarUnit = kCFCalendarUnitEra,

NSYearCalendarUnit = kCFCalendarUnitYear,

NSMonthCalendarUnit = kCFCalendarUnitMonth,

NSDayCalendarUnit = kCFCalendarUnitDay,

NSHourCalendarUnit = kCFCalendarUnitHour,

NSMinuteCalendarUnit = kCFCalendarUnitMinute,

NSSecondCalendarUnit = kCFCalendarUnitSecond,

NSWeekCalendarUnit = kCFCalendarUnitWeek,

NSWeekdayCalendarUnit = kCFCalendarUnitWeekday,

NSWeekdayOrdinalCalendarUnit = kCFCalendarUnitWeekdayOrdinal,

NSQuarterCalendarUnit = kCFCalendarUnitQuarter,

NSWeekOfMonthCalendarUnit = kCFCalendarUnitWeekOfMonth,

NSWeekOfYearCalendarUnit = kCFCalendarUnitWeekOfYear,

NSYearForWeekOfYearCalendarUnit = kCFCalendarUnitYearForWeekOfYear

NSCalendarCalendarUnit = (1 << 20),

NSTimeZoneCalendarUnit = (1 << 21).

时间: 2024-12-24 13:21:38

iOS开发日记26-详解时间戳的相关文章

iOS开发 - HTTP协议详解

URL(统一资源定位符) 什么是URL URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URL URL的基本格式 = 协议://主机地址/路径 例如: http://www.baidu.com http://www.oschina.net 协议:不同的协议,代表着不同的资源查找方式.资源传输方式 主机地址:存放资源的主机的IP地址(域名) 路径:资源在主机中

iOS开发 - post / get 详解

一. 区别 从表面的意思看get 和 post的区别get就是获取数据,post就是发送数据.这个是误区.其实两者都可以的,在IOS向服务器发送请求里面可以带参数. 那么这些误区是怎么出现的呢?先看看一下对http的解释 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE URL全称是资源描述符,我们可以这

玩转 IOS 开发 - block 使用详解

1. block作用: Block用来封装一段代码,可以在任何时候执行: Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 苹果官方建议尽量多用block.在多线程.异步任务 .集合遍历.集合排序.动画转场用的很多 2. Block的定义: int (^MySum)(int, int) = ^(int a, int b) { return a+b; }; 如上面代码定义了一个叫MySum的blocks对象,它带有两个int参数,返回int.等式右边就 是blocks

iOS开发 -UIScrollView详解

UIScrollView 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限 当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容 普通的UIView不具备滚动功能,不能显示过多的内容 UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容 举例:手机上的"设置".其他示例程序 UIScrollView的用法 将需要展示的内容添加到UIScrollView中 设置UIScrollView的cont

ios新特征 ARC详解

IOS ARC 分类: IOS ARC2013-01-17 09:16 2069人阅读 评论(0) 收藏 举报 目录(?)[+] 关闭工程的ARC(Automatic Reference Counting) 顺带附上ARC教程 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论.请不要将本文的部分或全部内容用于商用,谢谢合作. 欢迎转载本文,但是转载请注明本文出处:http://www.onevcat.com/2012/06/arc-hand-by

iOS定位服务编程详解

现在的移动设备很多都提供定位服务,使用iOS系统的iPhone.iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星 iOS 不像Android系统在定位服务编程时,可以指定采用哪种途径进行定位.iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备是采用 哪种方式进行定位的,iOS系统会根据设备的情况和周围的环境,采用一套最佳的解决方案.这个方案是这样的,如果能够接收GPS信息,那么设备优先采用 GP

iOS多线程实现方案详解01——NSThread

NSThread 一.创建和启动线程 1.开线程的几种方式 1)先创建线程,后启动 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; [thread start]; 2)创建线程后自动直接启动 [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil]; [sel

豹哥嵌入式讲堂:ARM Cortex-M开发之文件详解(8)- 镜像文件(.bin/.hex/.s19)

大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的image文件(.bin, .hex, .s19). 今天这节课是豹哥<ARM Cortex-M开发之文件详解>主题系列的最后一节课(突然有点不舍,要告别的感觉,咳咳,让豹哥整理下情绪先).今天豹哥主要讲的是工程开发最终的output文件,即image文件.image文件也叫镜像文件,这个文件主要包含的是只有芯片能够解释执行的二进制机器码数据,这些数据其实在前面介绍的relocatable.list.executable

IOS 友盟使用详解

IOS 友盟使用详解 这篇博客将会详细介绍友盟的使用,希望对博友们有所帮助. 首先我们在浏览器上搜索友盟. 在这里我们选择官网这个,进去友盟官网后我们按照下图进行选择. 接下来选择如下图 Next 这样我们便进入到了帮助文档 如果还没有友盟账号那么我们就需要注册一下了(点击图片中的注册即可) 注册成功并且登陆后我们需要按照操作获取Appkey 操作如图 NEXT 成功获取Appkey(复制下来,接下来会用到) 返回帮助文档 接下来是下载(安装)SDK,我么可以按照图片中的两种方法操作. 我选择了

iOS学习--UIScrollView 原理详解

iOS学习--UIScrollView 原理详解 http://blog.csdn.net/yanfangjin/article/details/7898189 ScrollView UIScrollView UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容. Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).