我正在使用下面的代码,但它提前一天给我。
示例:将输入字符串作为“ 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;
}
谢谢。
答案 0 :(得分:5)
这些是因为时区差异而发生的,请设置适当的时区
-(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;
}
答案 1 :(得分:3)
这可能与TimeZone问题有关 - 是你在UTC或当地时间得到的日期?相应地设置dateFormatter的时区
答案 2 :(得分:3)
这是一个时区问题。设置DateFormatter对象的TimeZone。
[dateFormatter setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @"GMT"]];