这可能是一个愚蠢的问题,但我似乎无法在此处或在文档中找到答案。将日期的NSString转换为NSDate
我想将一个NSString如@“9/22/2010 3:45 PM”转换为一个NSDate。
我知道使用NSDateFormatter,但问题是
- 月份可能是一个或两个数字
- 同样,日期可能是一个或两个数字
- 时间可能是一个或两个数字
- 上午/下午我该怎么办?
这可能是一个愚蠢的问题,但我似乎无法在此处或在文档中找到答案。将日期的NSString转换为NSDate
我想将一个NSString如@“9/22/2010 3:45 PM”转换为一个NSDate。
我知道使用NSDateFormatter,但问题是
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy h:mm a"];
NSDate *date = [dateFormat dateFromString:dateStr];
[dateFormat release];
有2位数的日或2位数月份没有问题。
这必须帮助你。
您可以使用NSDateFormatter
类将NSString
解析为NSDate
类。更多信息请参见the documentation:
NSDateFormatter的实例创建NSDate的(和NSCalendarDate)对象的字符串表示,和日期和时间的文本表示转换成NSDate的对象。
我有同样的问题,不知道为什么NSDateFormatter不工作,我(的iOS5 - Xcode的4.3.2),但是这个工作我出去:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSString *dateString = @"05-06-2012";
NSDate *date;
NSError *error = nil;
if (![dateFormatter getObjectValue:&date forString:dateString range:nil error:&error]) {
NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
}
[dateFormatter release];
这应该工作。不要忘记发布`dateFormat`。 – 2010-12-02 07:05:28