转换NSDateFormatter时,IOS系统时间不同
我现在是这样设置日期时间的转换NSDateFormatter时,IOS系统时间不同,ios,objective-c,Ios,Objective C,我现在是这样设置日期时间的 NSDate* now = [NSDate dateWithTimeIntervalSinceNow:[[NSTimeZone systemTimeZone] secondsFromGMT]]; NSDate *date = [object valueForKey:@"dateTime"];// valueForKey:@"dateTime"=now NSLog(@"%@",date); NSDateFormatter *formatter
NSDate* now = [NSDate dateWithTimeIntervalSinceNow:[[NSTimeZone systemTimeZone] secondsFromGMT]];
NSDate *date = [object valueForKey:@"dateTime"];// valueForKey:@"dateTime"=now
NSLog(@"%@",date);
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"yyyy"];
NSString *year = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"MM"];
NSString *month = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"dd"];
NSString *day = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"HH"];
NSString *hour = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"mm"];
NSString *minute = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"ss"];
NSString *second = [formatter stringFromDate:date];
NSLog(@"%@",date);
NSLog(@"%@/%@/%@ %@:%@:%@ ",year,month,day,hour,minute,second);
并使用值名称“now”,尝试像这样转换为NSString
NSDate* now = [NSDate dateWithTimeIntervalSinceNow:[[NSTimeZone systemTimeZone] secondsFromGMT]];
NSDate *date = [object valueForKey:@"dateTime"];// valueForKey:@"dateTime"=now
NSLog(@"%@",date);
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"yyyy"];
NSString *year = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"MM"];
NSString *month = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"dd"];
NSString *day = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"HH"];
NSString *hour = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"mm"];
NSString *minute = [formatter stringFromDate:date];
[formatter setLocale:[NSLocale systemLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"ss"];
NSString *second = [formatter stringFromDate:date];
NSLog(@"%@",date);
NSLog(@"%@/%@/%@ %@:%@:%@ ",year,month,day,hour,minute,second);
控制台日志
2014-03-24 17:32:36.034 SecurityGate[7147:60b] 2014-03-24 15:51:29 +0000
2014-03-24 17:32:36.037 SecurityGate[7147:60b] 2014/03/25 00:51:29
我想做同样的(系统时间是日本。东京)
请帮帮我 您的错误在这行代码中:
NSDate *date = [object valueForKey:@"dateTime"];// valueForKey:@"dateTime"=now
评论称这是“现在”,但事实并非如此。您的NSLog输出是:
2014-03-24 17:32:36.034 SecurityGate[7147:60b] 2014-03-24 15:51:29 +0000
请注意,在开始时它有NSLog的时间,大概在您的本地时区(东京?)
但打印的日期完全不同。小时可以用时区问题来解释,但分/秒也是错误的。将其转换为您当地的时区将得到2014-03-25 00:51:29,这是我写这篇文章时起的整整六个小时
很明显,对象中的数据并不像你想象的那样是“现在”的。你知道时区吗?在您的情况下,用于NSLog的日期描述将始终以GMT打印,并在输出末尾显示+0000。PS的可能副本:17:32pm不是解决日期问题的时间!日期是程序员所面临的最复杂的问题。是时候回家过夜了,早上再处理它了NSDate*now=[NSDate DATE WITH TIMEINTERVALICENSNOW:[NSTimeZone SYSTEM TIMEZONE]秒自GMT];我想要的是正确的数据。我使用核心数据(valueForKey:@“dateTime”=现在的意思是,valueForKey:@“dateTime”是核心数据值。)但当我尝试转换为NSString时,返回不同的日期值。2014-03-2415:51:292014/03/25 00:51:29是同一时间。(+9小时问题)很抱歉把你弄糊涂了。”“现在”并不完全是“现在”“现在”是指数据输入时间。(用不同的方法,总是过去)我想我有+9小时的问题。(日本时间格林尼治标准时间之间)。我想把它修好。