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