用一个小bug将NSDate转换为NSString

时间:2015-07-02 16:55:23

标签: ios nsdateformatter

我使用此代码段将给定日期转换为字符串。但如果日期恰好小于5:00,则结果为先前日期。例如,这个日期:" 07-01-15 05:00:00 + 0000"会正常工作。但是" 07-01-15 04:49:00 + 0000"将有一个事先约会的日期。

有什么建议吗?

+(NSString *)stringFromGivenDate:(NSDate *)date
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat = @"MM-dd-yy";
    NSString *dateString = [dateFormatter stringFromDate:date];
    NSLog(@"date: %@", dateString);
    return dateString;
}

1 个答案:

答案 0 :(得分:4)

默认情况下,NSDateFormatter将时区设置为您的区域设置时区。

但是,将日期转换为字符串会将时间更改为GMT时间。

所以你必须使用

设置时区
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]

或您想要的任何时区(例如@"GMT+5:30")。

所以你的代码就像:

+(NSString *)stringFromGivenDate:(NSDate *)date
{
  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  dateFormatter.dateFormat = @"MM-dd-yy";
  dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]
  NSString *dateString = [dateFormatter stringFromDate:date];
  NSLog(@"date: %@", dateString);
return dateString;
}