日期格式无法正常工作

时间:2014-11-20 11:02:27

标签: ios objective-c xcode

我按时区转换日期,我还有一个要求是日期格式。现在我在12/15/14,早上5:00格式获得日期,但我希望它在“2014年11月18日下午5:15”格式。事件我没有按照我的日期格式得到正确的输出。 这在“目标C”中是否可行。我的代码是:

-(NSString *)dateFormater : (NSString *)dateStr
{
  //NSString *dateStr = @"2014-11-30T21:25:00+00:00";

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

  [dateFormatter1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssz"];
  // [dateFormatter1 setDateFormat:@"dd MMM,yyyy'T'HH:mm:ssz"];

  NSDate *date = [dateFormatter1 dateFromString:dateStr];

  NSLog(@"date : %@",date);


  NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];

  NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];


  NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date];

  NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:date];

  NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset;

  NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date];

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

 // [dateFormatters setDateFormat:@"dd-MMM-yyyy hh:mm"];
 [dateFormatters setDateFormat:@"dd MMM, yyyy hh:mm a"];

 [dateFormatters setDateStyle:NSDateFormatterShortStyle];

 [dateFormatters setTimeStyle:NSDateFormatterShortStyle];

 [dateFormatters setDoesRelativeDateFormatting:YES];

 [dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];

 dateStr = [dateFormatters stringFromDate: destinationDate];

 NSLog(@"DateString : %@", dateStr);
 return dateStr;

}

1 个答案:

答案 0 :(得分:2)

您格式化字符串dd MMM, yyyy hh:mm a是正确的,但在设置格式字符串后,您将再次更改它。 删除这些行:

 [dateFormatters setDateStyle:NSDateFormatterShortStyle];

 [dateFormatters setTimeStyle:NSDateFormatterShortStyle];

但总的来说,我不会使用静态格式字符串,至少在全世界发布应用程序时不会。由于大多数国家/地区都有不同的本地化用于演示目的,因此您最好使用:

dateStr = [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterShortStyle];