0

NSDATE を明日、今から 1 週間後、今から 1 か月後などの人間が読める形式に変換するなど、人間が読める日付を出力するにはどうすればよいですか?

たとえば、現在の時刻が 2012 年 1 月 19 日午前 7 時の場合

入力日は 2012 年 1 月 20 日午前 9 時

その後、関数は明日の午前 9 時に実行されます。

オンラインで過去の日付でこれを行う方法を見つけましたが、将来の日付ではできませんでした。

また、オンラインで見つけた機能は特定のものではありませんでした。どんな助けでも大歓迎です!ありがとう

4

1 に答える 1

2

NSDateFormatter を使用する必要があります。ドキュメントから:

setDoesRelativeDateFormatting: 受信者が日付コンポーネントに「今日」や「明日」などの語句を使用するかどうかを指定します。

- (void)setDoesRelativeDateFormatting:(BOOL)b

パラメータ b 受信者が相対的な日付形式を使用する必要があることを指定する場合は YES、それ以外の場合は NO。考察 日付フォーマッタが相対日付フォーマットを使用する場合、可能であれば、出力の日付コンポーネントを「今日」や「明日」などの相対日付を示すフレーズに置き換えます。使用可能なフレーズは、日付フォーマッタのロケールによって異なります。一方、将来の日付については、次の例に示すように、英語では「明日」のみが許可されますが、フランス語では「明後日」のみが許可される場合があります。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSLocale *frLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];
[dateFormatter setLocale:frLocale];

[dateFormatter setDoesRelativeDateFormatting:YES];

NSDate *date = [NSDate dateWithTimeIntervalSinceNow:60*60*24*3];
NSString *dateString = [dateFormatter stringFromDate:date];

NSLog(@"dateString: %@", dateString);
// Output
// dateString: après-après-demain
于 2013-01-19T00:39:21.863 に答える