指定した日付は第何週なのか調べてみる
指定した日付が第何週目にあたるのか調べてみました。
用途としては「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でガリガリ製造してるわけですし、案外いけんのかも。。。
とりあえず終電地獄から早く脱し時間作らねば。。。
それではアプリの更新までもう少々お待ちくださいー。
ヽ(´ー`)ノ
mecabに辞書を追加してみた話
せっかく前回のエントリでmecabを利用できるようにしたので、優秀な形態素解析くんになってほしく辞書を追加しました。
追加する方法はほぼ以下の記事の通りです。
テキトーにワークディレクトリを用意しておきます。
# mkdir dicMaker # cd dicMaker
まずは「はてな」のワードを落とします。
curl -L http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv | iconv -f euc-jp -t utf-8 > keywordlist_furigana.csv
次にWikipediaのワードを落とします。
curl -L http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz | gunzip > jawiki-latest-all-titles-in-ns0
さすがのWikipedia。1分半ほど時間かかりました。
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 9255k 100 9255k 0 0 104k 0 0:01:28 0:01:28 --:--:-- 146k
落としてる間に、先ほどの記事の通りRubyのソースを書きます。
名前はテキトーにdicMaker.rbとしておきました。
require 'csv' original_data = { wikipedia: 'jawiki-latest-all-titles-in-ns0', hatena: 'keywordlist_furigana.csv' } CSV.open("custom.csv", 'w') do |csv| original_data.each do |type, filename| next unless File.file? filename open(filename).each do |title| title.strip! next if title =~ %r(^[+-.$()?*/&%!"'_,]+) next if title =~ /^[-.0-9]+$/ next if title =~ /曖昧さ回避/ next if title =~ /_\(/ next if title =~ /^PJ:/ next if title =~ /の登場人物/ next if title =~ /一覧/ title_length = title.length if title_length > 3 score = [-36000.0, -400 * (title_length ** 1.5)].max.to_i csv << [title, nil, nil, score, '名詞', '一般', '*', '*', '*', '*', title, '*', '*', type] end end end end
はてな、WikipediaのキーワードCSVが用意できたら早速Rubyを実行してみます。
# ruby dicMaker.rb
するとcustom.csvが出来上がります。
超簡単です。ynakayamaさんありがとう!
ここまでは本当に記事のとおりです。
ynakayamaさんの記事では以下のコマンドでした。
/usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv
私のmacにbrewで入れたmecabさんは以下のようになりました。
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv
PATH通してあげればいいんでしょうけど面倒なのでそのままにしてます。
とりあえず無事dicファイルができあがりました!