为字符串日期写一个合适的时间戳

时间:2012-03-23 11:25:15

标签: iphone objective-c nsdate nsdateformatter

我正在尝试从给定的字符串中获取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);

我犯的日期是空的,我犯了错误?

2 个答案:

答案 0 :(得分:2)

您设置的日期格式存在问题。根据苹果

  

格式字符串使用Unicode Technical Standard #35

中的格式模式

在您的情况下,您需要使用LLLL而非MMMM的单月版本。 如果您更改此行,您的代码将正常工作

[firstDateFormatter setDateFormat:@"LLLL dd hh:mm a"];

该标准解释了独立版本如下:

  

格式和独立之间最重要的区别   对于需要它的语言,表单是一种语法上的区别。对于   例如,许多语言要求没有月份名称   相关的日期编号为基本的主格,而一个月   具有关联日期的姓名应该是不同的   语法形式:genitive,partitive等。另一种常见的类型   格式与独立之间的区别涉及资本化;   但是,这可以单独控制,更精确地使用   第5.19节中描述的元素   ContextTransform Elements。

顺便说一下。阅读this它包含大量信息以及初始化dateformatter的更好方法。

答案 1 :(得分:0)

使用hh两位数小时:

[firstDateFormatter setDateFormat:@"MMММ dd hh:mm a"];