0

いずれか1つでこの問題を解決できますか?選択したタイムゾーンの日付と時刻を表示しようとしていますnaラベルまたはテキストフィールド以下のコードを試しましたが、選択したすべてのゾーンのシステムの現在の時刻を表示しています:(よろしくお願いします

NSDate *now = [NSDate date];
    NSCalendar *gregorian=[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    [gregorian setTimeZone:[NSTimeZone timeZoneWithName:selectedzone]];

    NSDateComponents* timeZoneComps = [gregorian components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSTimeZoneCalendarUnit fromDate:now];

    NSDate *selectedDate=[gregorian dateFromComponents:timeZoneComps];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterFullStyle];
    [formatter setDateFormat:@"dd-MM-yyyy HH:mm:ss "];
    NSString *strSelectedDate= [formatter stringFromDate:selectedDate];
    zone.text = strSelectedDate;
4

1 に答える 1

1

[NSDate date]は、現在の日付と時刻を表す日付オブジェクトを、どこにいても返します。NSDatesは、場所やタイムゾーンの影響を受けません。現在またはその他の瞬間を表すNSDateは1つだけであり、タイムゾーンごとに異なる日付オブジェクトはありません。したがって、タイムゾーン間で日付を変換しようとしないでください。

NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Sydney"]];
NSLog(@"%@",[formatter stringFromDate:now]); //--> 9/9/11 11:54 PM
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Paris"]];
NSLog(@"%@",[formatter stringFromDate:now]);
于 2012-09-05T13:42:32.063 に答える