转换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小时的问题。(日本时间格林尼治标准时间之间)。我想把它修好。