datepicker
を選択するために使用してtime
いますが、取得中にサーバーに送信した後、5〜6時間の差が表示されます。
サーバーは米国でホストされています。
では、どのようにすれば間違いなく正確に行うことができるか、ユーザーはどこからでもリクエストを行います。
ありがとう、
アルン
datepicker
を選択するために使用してtime
いますが、取得中にサーバーに送信した後、5〜6時間の差が表示されます。
サーバーは米国でホストされています。
では、どのようにすれば間違いなく正確に行うことができるか、ユーザーはどこからでもリクエストを行います。
ありがとう、
アルン
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;
}
タイムゾーンの問題です。を使用できます[yourDate dateByAddingInterval:[NSTimeZone secondsFromGMT]];
。
時間のロケールを設定してみてください:
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リリース];
iPhoneのデフォルト時刻をサーバーに送信しており、サーバーも送信した時刻と同じ時刻を送信している場合、異なるタイムゾーンに変換する際に問題が発生しますNSDate
。NSString
NSDateFormatter
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
を使用する場合は、上記のコードを使用してくださいNSDateFormatter
。
タイムゾーンとともに日付を送信します。例えば:
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 サブクラスもあります (このように)。