3

NSDateを使用せNSStringずに変換する方法はNSDateFormatter?

ご参考までに、私のコードは次のとおりです。リマインダーアプリケーションに使用しています。

どうもありがとうございます。

 NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];

// Get the current date
NSDate *pickerDate = [self->dp date];



// Break the date up into components
NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit )
                                               fromDate:pickerDate];
NSDateComponents *timeComponents = [calendar components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
                                               fromDate:pickerDate];

// Set up the fire time
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:[timeComponents hour]];
// Notification will fire in one minute
[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:[timeComponents second]];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
[dateComps release];
4

5 に答える 5

4

あなたの質問によると、この方法でそれを得ることができます -

NSString *stringDate = [NSString stringWithFormat:@"%@",pickerDate];
NSLog(@"%@",stringDate);

NSString *stringDate = [pickerDate description];
NSLog(@"%@", stringDate);

なぜあなたはそれをNSString使うNSDateFormatterのが怖いのですか?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];

NSString *stringDate = [dateFormatter stringFromDate:pickerDate];  
NSLog(@"%@", stringDate);
于 2012-10-04T11:15:58.660 に答える
3

皆さん、 NSDateのドキュメントを読んで、大声で叫びましょう!!!

説明

受信者の文字列表現を返します。

- (NSString *)description

戻り値

受信者の文字列表現。

討論

表現は、オペレーティング システムの異なるリリース間で一定であるとは限りません。日付をフォーマットするには、代わりに日付フォーマッタ オブジェクトを使用する必要があります (NSDateFormatter およびデータ フォーマット ガイドを参照)。

[NSString stringWithFormat:@"%@", something]また、 を実行すると、コード ビハインド%@フォーマッティングが のdescriptionメソッドを呼び出すことも理解する必要がありますsomething。NSString オブジェクトの場合、このdescriptionメソッドは文字列値を確実に返すように定義されていますが、他のすべての Cocoa クラスのdescription場合は、診断のみを目的としています。

NSDateFormatter のもう 1 つの代替手段 (逆方向の NSCalendar スキーム以外) は、自分で日付をクラックすることです。それほど難しくはありませんが、少なくとも興味深い演習です。

[自分で日付を割り出したい場合は、 を使用してください。これは、2001 年 1 月 1 日からの秒数を表すtimeIntervalSinceReferenceDateNSTimeInterval オブジェクト (実際には単なる typecast ) を返します (doubleそれ以前の日付は負の値です)。値は UTC になるため、現地時間が必要な場合はタイムゾーン オフセットを加算/減算してから、モジュロ演算の使用を開始します。ミリ秒、秒、分、時間に加えて、「2001 年 1 月 1 日からの日数」の値を簡単に取得できます。そこから日/月/年に変換するには熟考が必要ですが、特に 1900 年以降の日付に限定する場合は、それほど難しくありません。]

于 2012-10-04T11:38:51.207 に答える
1

私はこれを使用して、データベースに文字列のみとして保存しています。

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"];

NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];  
NSLog(@"Current time date:%@", dateString);
于 2012-10-04T11:24:42.407 に答える
0

あなたの質問によると、この方法で取得できます-

NSString *stringDate = [NSString stringWithFormat:@"%@",pickerDate];
NSLog(@"%@",stringDate);

NSString *stringDate = [pickerDate description];
NSLog(@"%@", stringDate);
于 2016-06-27T07:15:30.127 に答える