iOS:日期未正确转换

时间:2014-11-24 18:53:31

标签: ios objective-c nsdate datetime-conversion

比如说,我有一个日期:2014-11-24 12:24:25存储在一个NSString变量中。

我正在尝试将其转换为NSDate对象,以便我可以计算未来日期:

NSDate *futureTimeStamp;

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];

NSDate *oldDate = [dateFormatter dateFromString:timestamp];

它一直告诉我,旧日期时间是:2014-11-24 06:46:06 +0000这是不正确的。

为什么它没有正确转换它的任何想法?

更新#1:

timestamp是一个字符串。存储在该变量中的是:2014-11-24 12:58:40

当我打印出oldDate时,它会在2014-11-24 06:58:40 +0000

中显示

2 个答案:

答案 0 :(得分:-1)

你可以像以下一样进行时间转换:

NSDate *date = [oldDate dateWithTimeIntervalSinceReferenceDate:milliseconds];

答案 1 :(得分:-1)

尝试从UTC转换为本地日期

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
  NSDate *date = [dateFormatter dateFromString:timestamp];
  NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
  NSTimeZone *previousTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
  NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date];
  NSInteger currentOffset = [previousTimeZone secondsFromGMTForDate:date];
  NSTimeInterval gmtInterval = currentGMTOffset - currentOffset;
  NSDate *localDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date];