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。NSStringNSDateFormatter
[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 サブクラスもあります (このように)。