2

次のコードを使用して、iphone プロジェクトで GMT 形式の時刻を取得しました。しかし、それを現地時間に変換したいのですが、これを解決するためのアイデアをいくつか教えてください。よろしくお願いします。

NSDate *currentTime = [NSDate date];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

        NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
        [dateFormatter setTimeZone:gmt];

        NSString *resultString = [dateFormatter stringFromDate: currentTime];
        [dateFormatter release];

サーバーに送信するために GMT 形式を使用しています。最初に GMT 形式のみが必要です。その後、変換したいと思います。

4

6 に答える 6

4

このメソッドを使用して、現在の時刻を GMT に変換します

    +(NSDate *)getCurrentGMTTime
    {
        NSTimeZone *tz = [NSTimeZone defaultTimeZone];
        NSInteger seconds = -[tz secondsFromGMTForDate: [NSDate date]];
        return [NSDate dateWithTimeInterval: seconds sinceDate: [NSDate date]];
    }

次に、このメソッドを使用して GMT 時間を現地時間に変換します。GMT NSDate をこのメソッドに渡します。

    +(NSDate *)getLocalTimeWithDate:(NSDate*)date
    {
        NSTimeZone *tz = [NSTimeZone defaultTimeZone];
        NSInteger seconds = [tz secondsFromGMTForDate: date];
        return [NSDate dateWithTimeInterval:seconds sinceDate: date];
    }
于 2013-05-08T09:01:01.423 に答える
1
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm";

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release];
于 2013-05-08T07:51:39.070 に答える
0

この行を置き換えるだけです-

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];

と -

NSTimeZone *gmt = [NSTimeZone localTimeZone];

        NSDate *currentTime = [NSDate date];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

        NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
        [dateFormatter setTimeZone:gmt];

        NSString *resultString = [dateFormatter stringFromDate: currentTime];

        NSTimeZone *localTZ = [NSTimeZone localTimeZone];
        [dateFormatter setTimeZone:localTZ];

        NSString *localTimeString = [dateFormatter stringFromDate: currentTime];
        [dateFormatter release];
于 2013-05-08T07:51:43.560 に答える
0
    [dateFormatter setLocale:[NSLocale systemLocale]];
    [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
    NSString *resultString = [dateFormatter stringFromDate: currentTime];
    [dateFormatter release];
于 2013-05-08T07:52:46.467 に答える
0

NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone]; [dateFormatter setTimeZone:currentTimeZone]; ローカルタイムゾーンを取得するために使用できます

または - コメントから取得

NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];

NSString *gmtDateTime = [dateFormatter stringFromDate: currentTime];
NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
[dateFormatter setTimeZone:currentTimeZone];

NSString *currentDateTime = [dateFormatter stringFromDate: currentTime];
[dateFormatter release]
于 2013-05-08T07:51:00.447 に答える