1

重複の可能性:
[NSDate日付]から日付を数時間
ずらすNSDate日付で正しい時間が表示されない

私はこのコードを持っています:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];

NSString *formattedDateInString = [formatter stringFromDate:[self.datePicker date]];
NSLog(@"This is the formatted date (STRING) ---> %@" ,formattedDateInString);
self.fromHourLabel.text = formattedDateInString;

NSDate *date = [formatter dateFromString:formattedDateInString];
NSLog(@"This is the date (NSDate) ---> %@" ,date);
self.fromHour = date;

基本的に、UIDatePickerから日付を取得し、時間と分をラベルテキストとして設定し、日付をfromHourというプロパティに保存します。この-viewDidLoad方法では、私も持っています:

self.datePicker.timeZone = [NSTimeZone localTimeZone];

これは出力です:

ここに画像の説明を入力してください

ご覧のとおり、このコードでは、2つの主な問題があります。

  • 最初の出力は17.30、2番目の出力は16:30(最初の出力は正しい、2番目の出力は間違っている)と言うのはなぜですか?
  • 2番目の出力は「yyyy-MM-ddHH:mm:ss」でフォーマットされていますが、必要なのは「HH:mm」だけです。

手伝って頂けますか?

4

1 に答える 1

4

これをカバーする既存の質問がたくさんあることは知っていますが、見つかりません。

問題は単純です。フォーマット指定子NSLogを含むまたは文字列フォーマットを使用してオブジェクトを印刷すると、オブジェクトに対してメソッドが呼び出されます。%@description

description方法では、NSDate常にZuluタイムゾーン(+0000)を使用して完全な日付を表示します。

日付を特定の形式で印刷する場合は、を使用NSDateFormatterして文字列に変換し、文字列を印刷します。

編集:コメントからの情報に基づいて、ここでの問題の一部は、適切なから始めることですNSDate。次に、それを。の形式の文字列に変換しますHH:mm。次に、その文字列から新しい文字列を作成NSDateします。より良い解決策は、単に元の日付を保存し、2番目の日付の作成を回避することです。

于 2013-01-27T17:59:03.833 に答える