2

タイムピッカーに問題があり、問題が何であるかを理解できません。これが私のコードです。

timePicker.timeZone = [NSTimeZone localTimeZone];
NSDate *selected = [timePicker date];

NSString *message = [[NSString alloc] initWithFormat:
                     @"The date and time you selected is: %@", selected];
UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Date and Time Selected"
                      message:message
                      delegate:nil
                      cancelButtonTitle:@"Yes, I did."
                      otherButtonTitles:nil];
[alert show];

たとえば、午後2時55分を選択すると、アラートは「2012-08-1419:55:37+0000」を返します。

それは超単純なものでなければならず、ただそれを見ることができません

4

2 に答える 2

4

NSDateにはタイムゾーンの概念がありません。ニュートラルな時間情報を保存するだけです。したがって、補正するために出力を修正する必要があります。

NSDateFormatterのインスタンスを作成してから、setTimeZoneを作成できます。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"..."];

//Timezone!
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];

NSString *dateSting = [dateFormatter stringFromDate:myDate];
于 2012-08-14T20:18:21.090 に答える
0

UTCと国のタイムゾーンの間に時間間隔の差を追加する必要があります。これにより、これを実現できます。

(sender.date as NSDate).addingTimeInterval(TimeInterval(NSTimeZone.local.secondsFromGMT()))
于 2017-12-07T10:37:09.737 に答える