将 NSDate 转换为 NSString 有一个小错误

Convert NSDate to NSString with a small bug

我使用此代码段将给定日期转换为字符串。但是,如果日期恰好有小于 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;
}

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;
}