iPhoneアプリの開発で日付を比較して同じ日かどうか(時間は異なってもいい)の判定をしたいことがあったので、色々調べて試行錯誤したんですが結構苦労したのでメモを残しておきます。 最初、「日付の比較 objective-C」や「日付 判定 objective-C」でググったところ、出てきたのが NSDateクラスのisEqualToDateメソッドを使う方法です。isEqualToDateメソッドの結果はBOOL値で返されます。 テストプログラムです。 NSDate *dt1 = [NSDate date]; NSDate *dt2 = [NSDate dateWithTimeIntervalSinceNow:60.0f];//現在時刻に60秒加算) BOOL result = [dt1 isEqualToDate:dt2]; if (result == YES) { NSLog(@"s
今回はNSDateで時間の差分を求める方法です。例えば、無料アプリでポイントがあって、数時間たったら、ポイントを増やしたい。こんな時に、前回のアプリ起動時間と今回の起動時間を比較して、何時間経ったか調べることが出来ます。 まずは、アプリを起動した時の時間をNSUserDefaultsで記録しておきます。 //現在時刻を保存 NSDate* date = [NSDate date]; [[NSUserDefaults standardUserDefaults] setObject:date forKey:@"cdate"]; 後は、再び起動したタイミングで時間を比較します。 NSDate *now = [NSDate date]; float tmp= [now timeIntervalSinceDate:[[NSUserDefaults standardUserDefaults] obje
iOS3.xとiOS4.xでは、NSDateFormatterのdateFromStringの挙動が変わったようで、 iOS4以前をベースにしたiPhoneアプリ開発の記事を実際に確認しようとしても、 正常に変換されないことがありました。 ネットで調べたところ「2010-09-23T12:34:56+09:00」など 「+09:00」形式の場合は「+0900」に変えると上手くいくようです。 かなりハマったのでメモ。 NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"] autorelease]]; NSMutableString *
文字列→日付、日付→文字列の変換を行うNSDateFormatter、理解するまではちょっと難しそうな印象があるこのクラスの使い方を解説します。 フォーマットの指定 文字列 intputDateStr を inputDateFormatter で指定したフォーマットでパースしてNSDate に格納。それを outputDateFormatter で指定したフォーマットで文字列として出力するサンプルです。 NSDateFormatter *inputDateFormatter = [[NSDateFormatter alloc] init]; [inputDateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; NSString *intputDateStr = @"2000/01/02 03:04:05"; NSDate *inputDate
日付計算のうちよく使う可能性の高いものを紹介。 オフセット付きのNSDate生成 NSDate生成時に現在の時刻に指定秒のオフセットを加え、過去や未来の時刻を指定する。 NSDate* date; date = [NSDate dateWithTimeIntervalSinceNow:0.0f]; // 現在の時刻 NSLog(@"現在の時刻 -> %@", date); date = [NSDate dateWithTimeIntervalSinceNow:3*60]; // 3分後 NSLog(@"3分後 -> %@", date); date = [NSDate dateWithTimeIntervalSinceNow:3*60*60]; // 3時間後 NSLog(@"3時間後 -> %@", date); date = [NSDate dateWithTimeIntervalSi
以下のコードは,実機だと正しく動かない. NSString *dateString = @"Sep 12, 2009"; NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]; [inputFormatter setDateFormat:@"MMM dd, yyyy"]; NSDate *date = [inputFormatter dateFromString:dateString]; [inputFormatter release]; 実機で動かすには,以下のようにNSLocaleをセットする必要がある. NSString *dateString = @"Sep 12, 2009"; NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]
Presence 2はTwitterからユーザのつぶやきを取得してきて、それをTable Viewに表示するという課題であるが、Twitterから情報を取得して来るための便利なクラス(TwitterHelper)を事前に提供してくれるので、これを使えば非常に簡単に情報を取得する事が出来る。 今回の課題で難しかったのは、Twitterの呟きはそれぞれ長さが違うので、それにあわせてTable Viewの高さを変更しなければならないという点と、Table Viewを効率的に使用するため、Cellの再利用をするという部分である。 なお、本課題の回答は以下のブログで非常に明解に説明されているので、本ブログでは一部追加課題のコードのみ触れる事にする。 UITableViewDelegate, UITableViewDataSource-CS193P - /var/log/seiji また、Presen
Please note: this article is part of the older "Objective-C era" on Cocoa with Love. I don't keep these articles up-to-date; please be wary of broken code or potentially out-of-date information. Read "A new era for Cocoa with Love" for more. There is no single-line method for converting between formatting date strings and date objects in Cocoa — the API opts for flexibility rather than simplicity.
本体のローカライズの書式設定(言語環境の書式)の設定に合わせて日付時刻を取得する方法 概要 NSDateFormatterのインスタンスメソッドのsetLocaleでロケールを設定。 現在設定されているロケールは[NSLocale currentLocale]で取得できるので、そのままsetLocaleに指定する。 NSDateFormatterのインスタンスメソッドのsetDateStyleで日付の書式、setTimeStyleで時刻の書式を指定したロケールで設定できる。 指定できる定型フォーマット 指定できる定型フォーマットはNSDateFormatterStyleで定義されている5種類 ・NSDateFormatterNoStyle ・NSDateFormatterShortStyle ・NSDateFormatterMediumStyle ・NSDateFormatterLongS
ろくにCも知らないのに手をつけた、iPhoneソフト開発の“メモ”を忘れないように書き残しておこう。。。 とりあえずではあるが、NSDateFormatterを使用してみる。 NSDate *date; NSDateFormatter *dateFormatter; dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; [dateFormatter stringFromDate:date]; とりあえずこれで、NSDateFormatterを使用して、文字列として値を返せる。 上記例では、時間は表示せず、日付をMediumStyle
文字列(NSString)からNSDateへの変換はNSDateFormatを使えばできそうだ 例えばXMLに含まれるISO-8601形式の日付をNSDateにする場合は以下のようにする NSString *str = @"2008-12-02T03:02:27Z"; NSDateFormatter *sISO8601 = [[NSDateFormatter alloc] init]; [sISO8601 setTimeStyle:NSDateFormatterFullStyle]; [sISO8601 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; if ([str hasSuffix:@"Z"]) { str = [[str substringToIndex:(str.length-1)] stringByAppendingString:@"GM
※iPhone アプリを開発する勉強中です。自分用に勉強したときのメモです。 非公開API を使用していたためコードを改めました(2010.12.7) 現在時刻を取得する方法 NSTimer で1秒ごとに onTimer メソッドを呼び出し、UILabel clock の内容を更新する。 - (void)onTimer { NSDate *now = [NSDate date]; [formatter setDateFormat:@"kk"]; int h = [[formatter stringFromDate:now] intValue]; [formatter setDateFormat:@"mm"]; int m = [[formatter stringFromDate:now] intValue]; [formatter setDateFormat:@"ss"]; int s =
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く