GrandTime–操作iOS的时间更简单

482 查看

1281203-70862c0f222e4282
例行上图

有一个多月没有更新简书了,因为工作确实比较忙,天天加班。现在APP已经上线,是时侯继续我的写作之旅了。这次项目里面会进行大量的日期时间操作。比如获取某日期年月日,时分。两个日期的比较。设置某个日期的时间等操作。总之这次开发过程中不友好NSDate和其相关类的API让我感到不爽,感觉iOS原生的日期类非常不好用。于是我便萌生了自己写一个关于操作NSDate的类的想法,因以我以前是用C#,感觉C#的日期时间类比较优雅,我便参考它写了个iOS的DateTime,今天我便分享给大家。

iOS对日期和时间的操作的不足

NSDate是iOS表示日期时间的核心类。但是它也只能表示时间,如果需要格式化输出,需要使用到NSDateFormatter类,而如果需要取出里面的年月日和时分秒,则需要用到NSDateComponentsNSCalendar。相信每一位iOS开发者都会掌握这些类的使用,这里就不写示例代码了。虽然职责分离是一种好的设计,但是需要你大量对日期时间的比较,格式化输出等操作时,使用这些类来非常繁琐,要写很多的重复的代码,影响了开发效率。GrandTime正是解决这个问题而生的。

GrandTime组成

GrandTime由三个类组成:DateTime,TimeSpanGrandTimerDateTime是最核心的类,封装了NSDateNSDateComponents。把年月日时分秒的操作变得十分简单方便。而TimeSpan是一段时间间隔,相当于NSTimeInterval,同时还封装了很多功能。而GrandTimer是一个会自动停止的弱Timer,并且提供了Block来方便调用。下面我一个一个来介绍怎么使用。

DateTime

DateTime类封装了常见的日期时间操作。它提供了如下8个构造函数

111281203-57ad064788b4dac0
DateTime的构造函数

相信这8个构造函数可以满足绝大部分的使用场景。里面有两个需要说明一下,tick在里面是指毫秒,而timestampUnix时间戳。默认的无参构造函数和NSDate一样,都是使用当前时间。
下面看看代码

我为DateTime提供了操作符重载

DateTime也提供了一系列Add方法,可以对自身操作。改变自己的时间值。

121281203-ebadd457e4ee9e91
DateTime的Add系列方法