-1

datepickerを選択するために使用してtimeいますが、取得中にサーバーに送信した後、5〜6時間の差が表示されます。

サーバーは米国でホストされています。

では、どのようにすれば間違いなく正確に行うことができるか、ユーザーはどこからでもリクエストを行います。

ありがとう、

アルン

4

5 に答える 5

1

UTC は、使用される標準時間帯です。以下は、UTCで日付を取得するコードです

+(NSString *)getCurrentTime{

    NSDate *date = [NSDate date];

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

    [dateFormat setDateFormat:@"yyyy-MM-ddHH:mm:ss"];

    [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

    NSString *dateStr = [dateFormat stringFromDate:date];

    RELEASE_OBJECT(date)

    RELEASE_OBJECT(dateFormat)

    return dateStr;
}
于 2013-03-22T09:38:22.450 に答える
0

タイムゾーンの問題です。を使用できます[yourDate dateByAddingInterval:[NSTimeZone secondsFromGMT]];

于 2013-03-22T09:49:51.417 に答える
0

時間のロケールを設定してみてください:

    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@ "dd MM yyyy hh:mm:ss"];
    [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@ "en_US"] autorelease]];

     NSDate * sourceDate = [dateFormatter dateFromString:dateString];

    //時間帯
    NSTimeZone * sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@ "UTC"];
    NSTimeZone * destinationTimeZone = [NSTimeZone systemTimeZone];

    //タイムゾーンの間隔
    NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
    NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
    NSTimeInterval間隔=destinationGMTOffset-sourceGMTOffset;

    //変換日
    NSDate * destinationDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate];
    NSString * strFinalDate = [dateFormatter stringFromDate:destinationDate];

    [dateFormatterリリース];

    [destinationDateリリース];


于 2013-03-22T09:51:12.080 に答える
0

iPhoneのデフォルト時刻をサーバーに送信しており、サーバーも送信した時刻と同じ時刻を送信している場合、異なるタイムゾーンに変換する際に問題が発生しますNSDateNSStringNSDateFormatter

[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];

を使用する場合は、上記のコードを使用してくださいNSDateFormatter

于 2013-03-22T09:35:07.187 に答える
0

タイムゾーンとともに日付を送信します。例えば:

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
NSDate *date = [formatter dateFromString:dateString];

タイムゾーンが含まれ、サーバーは独自のタイムゾーンに変換できます。

互換性を高めるためにISO 8601を使用しています。ISO 8601 から NSDate に変換する NSFormatter サブクラスもあります (このように)。

于 2013-03-22T09:36:02.097 に答える