- (void) dateConverter{
NSString *string = [NSString stringWithFormat:@"%@ %@", [[self dates]objectAtIndex:0], [times objectAtIndex:0]]; // string = 01-10-2014 11:36 AM;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm a"];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSDate *date = [[NSDate alloc] init];
date = [dateFormatter dateFromString:string];
NSLog(@"dateFromString = %@", date); // 2014-10-01 18:36:00 +0000
NSTimeInterval timeInterval = [date timeIntervalSince1970];
NSLog(@"dateFromString = %f", timeInterval); // 1412188560.000000
}
我正在将string
转换为实际日期对象,但我得到了不同的行为
string = 01-10-2014 11:36 AM
是我试图转换的实际值但是得到了这个
2014-10-01 18:36:00 +0000
它出了什么问题?
答案 0 :(得分:2)
问题是显示问题。
您正在使用默认日期格式化程序来打印日期(NSLog使用了描述方法)。
时间以UTC(GMT)显示,看起来您在时区-0700。时间以时区偏移0000显示。
系统中的日期/时间基于GMT时间,可以在时区和地球上的任何地方比较时间,同时系统中的时间相同。
使用日期格式化程序以您想要的格式获取日期/时间。
示例代码:
NSString *dateString = @"01-10-2014 11:36 AM";
NSLog(@"dateString = %@", dateString);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm a"];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSDate *date = [[NSDate alloc] init];
date = [dateFormatter dateFromString:dateString];
NSLog(@"dateFromString = %@", date);
NSString *displayDate = [dateFormatter stringFromDate:date];
NSLog(@"displayDate = %@", displayDate);
输出:
dateString = 01-10-2014 11:36 AM dateFromString = 2014-10-01 15:36:00 +0000
displayDate = 01-10-2014 11:36 AM
注意:您可以提供自己的日期格式,以获得您想要的格式。