0

NSDateFormatter を使用して特定の日付形式を解析し、それを EKEvent に入れる方法がわかりません。現時点では、これが私のコードです。イベントを追加する許可を既に要求しており、requestAccessToEntityType:completion: の完了ハンドラーからメソッドが呼び出されます。

-(void) performCalendarOperation {
    NSString *startString = @"04/28/2013 2:30 PM";
    NSString *endString = @"04/28/2013 5:30 PM";

    EKEvent *newEvent = [EKEvent eventWithEventStore:self.eventStore];
    [newEvent setCalendar:[self.eventStore defaultCalendarForNewEvents]];
    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    [format setDateFormat:@"MM/dd/yyyy hh:mm a"];

    newEvent.startDate = [format dateFromString:startString];
    newEvent.endDate = [format dateFromString:endString];

    NSLog(@"START:%@\n\nEND:%@\n\n", newEvent.startDate, newEvent.endDate);
}

NSLog は次を出力します。

開始:2013-04-28 21:30:00 +0000 終了
:2013-04-29 00:30:00 +0000

この特定のケースでは、これを12時間にしたい

NSDateFormatter フォーマット文字列は、このスタイルの日付文字列に対して正しいように見えますが、何らかの理由で出力が正しくありません。イベントは、いくつかのプロパティを設定した後、コードの後半で実際にカレンダーに追加されますが、それはこの質問にとって重要ではありません。
注記として、iOS 6.0 より前の日付を解析していたときにこの問題に遭遇したことはありません。おそらく、API または書式設定の変更によるアーティファクトであり、私が考慮していないのでしょうか? 私が見ていない明らかな間違いはありますか?

ありがとう。

4

1 に答える 1

0

NSLog は常に 24 時間およびタイムゾーン GMT+0/UTC で出力されます。そのため、正しくないように見えますが、実際にはそうです。NSLog を使用して日付を正しく出力したい場合は、NSDateFormatter を使用して好みに合わせて日付をフォーマットする必要があります (stringFromDate を使用)。

于 2013-04-26T22:05:06.463 に答える