我使用NSDateformatter来解析日期。它工作正常,直到我更新到iOS 7.0.4。但是自从更新后我获得了零值,
这是我尝试解析的日期
11/20/2013 3:30:05 PM
以下是相同
的代码NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a";
[dateFormatter1 setLocale:[NSLocale currentLocale]];
NSDate *date = [dateFormatter1 dateFromString:[items objectAtIndex:2]];
但是我的约会时间为零。
如何在IOS 7.0.4中完成这项工作?
答案 0 :(得分:4)
您的日期已本地化,但您正在将设备用作其语言环境。 但AM / PM在其他语言环境中可能有所不同。
-(void)dateTest {
NSString *inputDate = @"11/20/2013 3:30:05 PM";
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a";
[dateFormatter1 setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
NSDate *date = [dateFormatter1 dateFromString:inputDate];
NSLog(@"date: %@", date); //OUTPUT date: 2013-11-20 15:30:05 +0000
}
答案 1 :(得分:2)
你能发布[items objectAtIndex:2]中存储的字符串吗? 我试一试,它对我来说很好用:
-(void)dateTest
{
NSString *inputDate = @"11/20/2013 3:30:05 PM";
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a";
[dateFormatter1 setLocale:[NSLocale currentLocale]];
NSDate *date = [dateFormatter1 dateFromString:inputDate];
NSLog(@"date: %@", date); //OUTPUT date: 2013-11-20 15:30:05 +0000
}
答案 2 :(得分:0)
如果显示不同的小时,您可能需要设置默认时区(这只发生在ios7之后)
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
似乎默认时区是设备所具有的时区,因此如果您没有指定默认时区,您可能会得到奇怪的结果。在ios7之前,它总是GMT。