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