ios中的日期和时间问题
我正在使用ios中的日期和时间问题,ios,objective-c,datetime,Ios,Objective C,Datetime,我正在使用日期选择器拾取时间,但在发送到服务器后,当我检索时,它显示5-6小时的差异 服务器托管在美国 所以,我将如何准确地做到这一点,没有任何区别,用户做任何地方的要求 谢谢 Arun若您将iPhone的默认时间发送到服务器,并且服务器也在您发送它的同一时间发送,那个么将出现问题:使用nsdateformator将您的NSDate转换为具有不同时区的NSString [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 使用nsda
日期选择器
拾取时间
,但在发送到服务器后,当我检索时,它显示5-6小时的差异
服务器托管在美国
所以,我将如何准确地做到这一点,没有任何区别,用户做任何地方的要求
谢谢
Arun若您将iPhone的默认时间发送到服务器,并且服务器也在您发送它的同一时间发送,那个么将出现问题:使用
nsdateformator
将您的NSDate
转换为具有不同时区的NSString
[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];
将包括时区,服务器将能够转换为自己的时区
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
为了更好的兼容性,我们使用了。还有一些NSFormatter子类可以从ISO 8601转换为NSDate并返回()。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];
//Timezones
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
//Interval in Timezones
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
//converted date
NSDate* destinationDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] ;
NSString *strFinalDate = [dateFormatter stringFromDate:destinationDate];
[dateFormatter release];
[destinationDate release];
NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];
[日期格式化程序setDateFormat:@“dd-MM-yyy-hh:MM:ss”];
[dateFormatter setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@“en_US”]自动删除]];
NSDate*sourceDate=[dateFormatter dateFromString:dateString];
//时区
NSTimeZone*sourceTimeZone=[NSTimeZone TimeZoneWithAbversion:@“UTC”];
NSTimeZone*destinationTimeZone=[NSTimeZone systemTimeZone];
//时区间隔
NSInteger sourceGMTOffset=[sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset=[destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval=目的地MTOFFSET-源GMTOFFSET;
//转换日期
NSDate*destinationDate=[[NSDate alloc]initWithTimeInterval:interval sinceDate:sourceDate];
NSString*strFinalDate=[dateFormatter stringFromDate:destinationDate];
[日期格式化程序发布];
[目的地释放];
您从服务器获取日期的格式是什么?请显示您的代码,并解释将日期发送到服务器的格式,然后将其读回。很可能是时区问题。时间是2013年3月20日上午11:45