指定した日付は第何週なのか調べてみる
指定した日付が第何週目にあたるのか調べてみました。
用途としては「2015-02-02T00:00:00+00:00」とJSONで複数日付が渡され、
それぞれが第何週目のグループに分けられればよいのかを調べるために使います。
まずString型で日付が渡ってくるのでNSDate型にする必要があります。
Objective-cやり始めたころに作ったメソッドがあったのでそれを流用します。
-(NSDate*)remakeDate:(NSString*)day{ day = [day stringByReplacingOccurrencesOfString:@"\n" withString:@""]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setTimeStyle:NSDateFormatterFullStyle]; [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"]; NSDate *remakeDay = [dateFormatter dateFromString:day]; if(!remakeDay){ [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mmZZZZ"]; remakeDay = [dateFormatter dateFromString:day]; } if(!remakeDay){ [dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"]; remakeDay = [dateFormatter dateFromString:day]; } return remakeDay; }
第何週目か確認したい日付のリストはテスト用に以下のように準備しておきます。
NSArray *dayList = [NSArray arrayWithObjects: [self remakeDate:@"2015-02-02T00:00:00+00:00"], [self remakeDate:@"2015-02-05T00:00:00+00:00"], [self remakeDate:@"2015-02-12T00:00:00+00:00"], [self remakeDate:@"2015-02-14T00:00:00+00:00"], [self remakeDate:@"2015-02-16T00:00:00+00:00"], [self remakeDate:@"2015-02-17T00:00:00+00:00"], [self remakeDate:@"2015-02-18T00:00:00+00:00"], [self remakeDate:@"2015-02-20T00:00:00+00:00"], [self remakeDate:@"2015-02-21T00:00:00+00:00"], [self remakeDate:@"2015-02-22T00:00:00+00:00"], [self remakeDate:@"2015-02-26T00:00:00+00:00"], [self remakeDate:@"2015-02-27T00:00:00+00:00"], [self remakeDate:@"2015-02-28T00:00:00+00:00"], nil];
上記のリストをログに出力しながら確認してみます。
NSDateComponents* components = [[NSDateComponents alloc] init]; NSCalendar *calendar = [NSCalendar currentCalendar]; NSUInteger flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekOfMonthCalendarUnit; for (int i = 0; i<[dayList count]; i++) { components = [calendar components:flags fromDate:[dayList objectAtIndex:i]]; NSLog(@"%ld年%ld月%ld日は第%ld週目です。" ,(long)[components year] ,(long)[components month] ,(long)[components day] ,(long)[components weekOfMonth]); }
出力した結果は以下のようになりました。
2015年2月2日は第1週目です。 2015年2月5日は第1週目です。 2015年2月12日は第2週目です。 2015年2月14日は第2週目です。 2015年2月16日は第3週目です。 2015年2月17日は第3週目です。 2015年2月18日は第3週目です。 2015年2月20日は第3週目です。 2015年2月21日は第3週目です。 2015年2月22日は第4週目です。 2015年2月26日は第4週目です。 2015年2月27日は第4週目です。 2015年2月28日は第4週目です。
いじょーです!
指定した日付が何曜日か取得する方法
Objective-cで指定した日付が何曜日か取得する方法を調べたのでメモしておきます。
NSCalendar *calendar = [NSCalendar currentCalendar]; //2015年2月1日を指定 NSDateComponents* components = [[NSDateComponents alloc] init]; components.year = 2015; components.month = 2; components.day = 1; NSDate* date = [calendar dateFromComponents:components]; //何曜日か取得(1=日曜日〜7=土曜日) components = [calendar components:NSWeekdayCalendarUnit fromDate:date]; NSArray *weekList = @[@"日曜",@"月曜",@"火曜",@"水曜",@"木曜",@"金曜",@"土曜"]; NSLog(@"%@",[weekList objectAtIndex:[components weekday]-1]);
components:NSWeekdayCalendarUnitでセットした日付の曜日番号を取得します。
日曜始まりで1=日曜日〜7=土曜日となります。
weekList配列に曜日の名称を入れておきます。
そのあと、配列からobjectAtIndexで取得できた曜日番号で曜日名称を取得する流れになります。
※曜日番号が1始まりなので−1しています。
いじょーです!
現在申請中です!
2015年に入り、もう日にちもだいぶ経ってしまいましたが、明けましておめでとうございます。
年末はスノボ、年始は熱に悩まされ「嬉し苦し」な生活で忙しくしておりました。
( ゚Д゚ノノ☆パチパチパチパチ
前置きはこれくらいにして・・・
マンガ新刊情報のアプリのレビューへ投稿頂いた方!
ありがとうございます!
まだの方!レビューお願いします!!
やはりコメントいただくとモチベーション上がりますし、要望なんかも参考に改善策を練ることができます。
★が多いと更に喜びます!!
(・∀・)ニヤニヤ
レビューはやはり大切ですねぇ〜(しみじみ)
今回の記事で伝えたいこと。
レビューで要望いただいた内容を反映したものを今Appleに申請中です。
今しばらくお待ちください。
また、iOS8でレイアウト崩れが起きていたので合わせて修正しています。
他にもいろいろと更新しているので、詳細は配信時の案内で確認お願いします。
そろそろこのアプリのAndroid版を作ろうかなと考え中・・・
AndroidStudioがBETA版から脱した今がちょうどイイタイミングかなと・・・
せっかくAPIも自前のサーバーで用意してるわけですし。。
そして、何よりこのブログへの検索キーワードに「アプリ マンガ 新刊」が多い多い。。
Androidで有名なマンガ新刊情報のアプリがあったようですが、今は削除されてなくなっているようですね。。。
狙い目なのかな?
もともとiOSで今出している私の「マンガ新刊情報」アプリですが、
Googleが提唱するMaterialDesignを参考にしているためAndroidでも使えるデザインというわけです。
そこに悩む時間を費やさなくてよくなる分、案外あっさりできるものなのかな。。
最近はObjective-CよりもJavaでガリガリ製造してるわけですし、案外いけんのかも。。。
とりあえず終電地獄から早く脱し時間作らねば。。。
それではアプリの更新までもう少々お待ちくださいー。
ヽ(´ー`)ノ