构建NSDate时出现问题

时间:2016-01-29 18:03:19

标签: ios objective-c ios8 nsdate nsdateformatter

我正在使用此字符串NSDate,但每次我从Previous Month获取Selected Month

我无法找到错误:

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];

  [dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];

  [dateFormatter setDateFormat:@"dd/MMM/yyyy"];

  NSDate *date = [dateFormatter dateFromString:strDate];

  NSLog(@"------Date----%@",date);

我尝试了很多Datestrings一些日志是:

  strDate =---- 01/Jan/2016
  ------Date----2015-12-31 18:30:00 +0000

  strDate =----01/Dec/2015
  ------Date----2015-11-30 18:30:00 +0000

1 个答案:

答案 0 :(得分:1)

正如维京人所说,你所看到的是你显示结果日期的方式。在NSLog中记录NSDate对象时,它始终以UTC格式显示。如果您的日期没有时间组件,则假设为午夜。如果您的时区是UTC时间,则您所在时区的午夜将显示为前一天。

我建议你创建一个显示日期格式化程序来显示你的结果日期,并使用它:

- (NSString *) displayStringForDate: (NSDate *) date
{
   static NSDateFormatter *dateFormatter;
   if (dateFormatter == nil)
   {
     //This date formatter will default to the current time zone, like you want.
     dateFormatter = [[NSDateFormatter alloc]init];
     //Adjust the date format as desired
   {
   return [dateFormatter stringFromDate: date];
}

然后在测试代码中使用该方法:

NSLog(@"------Date----%@", [self displayStringForDate: date]);