这个问题在这里已经有了答案:
NSDate Format outputting wrong date
(5 个回答)
8年前关闭。
我正在使用下面的代码,但它给了我提前一天 date 。
示例 :将输入字符串传递为“2013-08-31T23:59:59-0400”,输出日期为“2013-09-01 03:59:59 +0000”。
NSDateFormatter *formatter = [self railsDateFormatter];
NSDate *date = [formatter dateFromString:dateString];
+(NSDateFormatter*)railsDateFormatter
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssZ"];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:locale];
return formatter;
}
谢谢你 。
最佳答案
嗨,这些是由于时区差异而发生的,请正确设置时区
-(NSDate *)convertDateFromString:(NSString *)strDate DateFormat:(NSString *)strDateFromat
{
strDateFromat=@"yyyy-MM-dd'T'HH:mm:ss";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//chirag::In date day is displayed one less so it can print exact date
formatter.timeZone = [NSTimeZone timeZoneWithAbbreviation: @"GMT"];
[formatter setDateFormat:strDateFromat];
NSDate *currentYearDate = [formatter dateFromString:strDate];
return currentYearDate;
}
关于ios - NSDateFormatter 提前一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21455870/