写作字符串日期
问题描述:
我试图从给定的字符串获得的NSDate正确的时间戳:写作字符串日期
NSString* dateString = @"March 23 04:00 AM";
NSDateFormatter* firstDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[firstDateFormatter setDateFormat:@"MMММ dd h:mm a"];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[firstDateFormatter setLocale:locale];
NSDate* date = [firstDateFormatter dateFromString:dateString];
NSLog(@"date:%@", date);
我得到的日期是空在那里我已经犯了一个错误?
答
没有与您设定的日期格式的问题。据苹果
格式字符串使用从Unicode Technical Standard #35
格式模式你的情况,你需要使用一个月就是LLLL
不MMMM
的单机版。 如果更改这一行,你的代码会工作得很好
[firstDateFormatter setDateFormat:@"LLLL dd hh:mm a"];
该标准指出,独立版本如下:
最重要的区别格式和独立 形式之间进行语法上的区别,适用于需要它的语言。对于 示例,许多语言要求没有关联的日期编号的月份名称采用基本主格形式,而具有关联日期编号的月份名称应该采用不同的 语法形式:属格,部分等。另一种格式与单机的区别涉及大写字母的常见类型 ;然而,这可以单独地并且更精确地使用 元件来控制,如第5.19节中所描述的 上下文转换元素。
Btw。阅读this它包含大量的信息以及初始化dateformatter的更好方法。
答
使用hh
了两位数小时:
[firstDateFormatter setDateFormat:@"MMММ dd hh:mm a"];
我想说你已经犯了一个(非常常见的)错误,那就是没有阅读苹果公司为iOS SDK提供的文档。 – 2012-03-23 11:30:19
@NickBull由于MMMM和LLLL不同,这个问题实际上有点棘手,所以我很高兴它发现堆栈溢出。 – 2012-03-23 13:14:47