2014年3月1日土曜日

iOS時間操作ライブラリ(DateKit)

ちょっとしたアプリを開発しようかと思い立って, つらつらとコードを書いていたところ,さくっと機能的なところがまとまったので 公開できそうな部分を切り離して, GitHubで公開いたしました, かなり久々の公開です iOSで時間などを操作するためのライブラリです, "DateKit"と名付けました URLはこちら 中身はきわめてシンプルな, NSDateとNSStringのCategoryとして実装してありますので, 特に何か依存するライブラリなどはなく NSDateと, NSStringに機能が追加されたなあという程度のものです タイムゾーン的なところは意識していないです,(このあたりもやりたいなあ) GitHubでは英語の解説が中心ですので, 日本語の解説をこちらでエントリーしておきました

使い方

プロジェクトそのものは, staticライブラリになっているので, ビルドしてヘッダーをコピーしていただければ外部ライブラリとして活用できるはずです. その辺りが面倒であれば,

UnitTest

UnitTestを準備しておきました. DateKitTests.mというソースがありましてその中にざっくりとしたUnitテストが入っています 実行のさせ方は, 通常のテストと同じで, XCodeでスキームを切り替えてTestで実行させればできます 詳しくは, iOS UnitTest(XCTest) English でUnitTestの走らせ方は解説しています

メソッド

現在公開しているメソッドは以下のとおりです(後でかわるかも)
NSDate
  • -(NSDate *)getAdd:(int)days
  • days分だけ日数をプラスします
  • -(NSDate *)getSub:(int)days
  • days分だけ日数を引きます
  • -(NSDate *)getFirstDateOfMonth
  • 月のはじめの日をとってきます
  • -(NSDate *)getLastMonthLast
  • 次の最後の日をとってきます
  • -(NSDate *)getNextMonthFirst
  • 次の月のはじめの日をとってきます
  • -(int)getWeekDay
  • 何曜日かをとってきます1:日曜日, 7:土曜日
  • -(BOOL)isWeekEnd
  • NSDateが週末かどうかを判定します
  • -(BOOL)isWeekDay
  • NSDateがビジネスデイかどうかを判定します
  • -(int)getDay
  • NSDateから, 日にち情報を取得します
  • -(int)getMonth
  • NSDateから, 月情報を取得します
  • -(int)getYear
  • NSDateから, 年情報を取得します
  • -(int)getHour
  • NSDateから, 時間情報を取得します
  • -(int)getMinutes
  • NSDateから, 分情報を取得します
  • -(int)getSeconds
  • NSDateから, 秒情報を取得します
  • -(NSDate *)begin
  • その日のはじめ00:00:00を取得します
  • -(NSDate *)end
  • その日の終了23:59:59を取得します
  • +(NSDate *)getFromYMD:(int)year month:(int)month day:(int)day
  • 年, 月, 日にちより, NSDateをつくります
  • -(NSDate *)getFromTime:(int)hour minute:(int)minute second:(int)second
  • NSDateに時間情報をセットします
  • -(NSString *)formatYear
  • NSDateより, yyyyフォーマットのNSStringを取得します
  • -(NSString *)formatMonth
  • NSDateより, MMフォーマットのNSStringを取得します
  • -(NSString *)formatDay
  • NSDateより, ddフォーマットのNSStringを取得します
  • -(NSString *)formatA
  • NSDateより, yyyy-MM-ddフォーマットのNSStringを取得します
  • -(NSString *)formatB
  • NSDateより, yyyy/MM/ddフォーマットのNSStringを取得します
  • -(NSString *)formatFull
  • NSDateより, yyyy/MM/dd HH:mm:ssフォーマットのNSStringを取得します
  • -(BOOL)before:(NSDate *)target
  • NSDateがターゲットのNSDateより前であるどうかの判定をします
  • -(BOOL)after:(NSDate *)target
  • NSDateがターゲットのNSDateより後であるどうかの判定をします
NSString
  • -(NSDate *)parseYYYYMMddD
  • YYYY-MM-dd の形のNSStringをパースして, NSDateで返します, 失敗するとnilが返ります
  • -(NSDate *)parseYYYYMMddS
  • YYYY/MM/dd の形のNSStringをパースして, NSDateで返します, 失敗するとnilが返ります
  • -(NSDate *)parseH
  • YYYY-MM-dd HH:mm の形のNSStringをパースして, NSDateで返します, 失敗するとnilが返ります
  • -(NSDate *)parseFull
  • YYYY-MM-dd HH:mm:ss の形のNSStringをパースして, NSDateで返します, 失敗するとnilが返ります

例をいくつか

1日先のNSDateをとってくる
NSDate *today = [NSDate date];
NSDate *tomorrow = [today getAdd:1];
1日前のNSDateをとってくる
NSDate *today = [NSDate date];
NSDate *yesterday = [today getSub:1];
YYYY/MM/ddのフォーマットのNSStringをパースする(失敗するとnilがかえります)
NSString *str = @"2014/03/01";
NSDate *format = [str parseYYYYMMddS];
例を増やしていければなと思います(編集中)

0 件のコメント:

コメントを投稿