Tho*_*ney 13 iphone objective-c nsdateformatter ios
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss zzz"];
NSString *dateString = @"Tue, 08 Jun 2010 17:00:00 EDT";
NSDate *eventDate = [dateFormatter dateFromString:dateString];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,eventDate对象为nil.有人能告诉我吗?这段代码以前有用.
更新:无法谈论为什么由于NDA而无效.我只想说,当iOS 4出局时,我会将答案发给我自己的问题.
dra*_*ard 64
/*
x number
xx two digit number
xxx abbreviated name
xxxx full name
a AM/PM
A millisecond of day
c day of week (c,cc,ccc,cccc)
d day of month
e day of week (e,EEE,EEEE)
F week of month
g julian day (since 1/1/4713 BC)
G era designator (G=GGG,GGGG)
h hour (1-12, zero padded)
H hour (0-23, zero padded)
L month of year (L,LL,LLL,LLLL)
m minute of hour (0-59, zero padded)
M month of year (M,MM,MMM,MMMM)
Q quarter of year (Q,QQ,QQQ,QQQQ)
s seconds of minute (0-59, zero padded)
S fraction of second
u zero padded year
v general timezone (v=vvv,vvvv)
w week of year (0-53, zero padded)
y year (y,yy,yyyy)
z specific timezone (z=zzz,zzzz)
Z timezone offset +0000
sql y-M-d H:m:s
rss [E, ]d MMM y[y] H:m:s Z|z[zzz]
*/
Run Code Online (Sandbox Code Playgroud)
这是我对日期解析的评论.我使用以下内容,其中toDateUsingFormat使用NSDateFormatter传入的字符串.我不使用语言环境,因为rss日期未本地化.
if ( 0 == [string rangeOfString:@","].length ) {
result = [string toDateUsingFormat:@"d MMM y H:m:s z"];
} else {
result = [string toDateUsingFormat:@"E, d MMM y H:m:s z"];
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我用getObjectValue:而不是dateFromString.
NSDate *result = nil;
NSError *error = nil;
[dataFormatter getObjectValue:&result forString:dateString errorDescription:&error];
Run Code Online (Sandbox Code Playgroud)
这个问题的答案如下:我使用了错误的日期格式字符串:
@"EEE, d MMM yyyy HH:mm:ss zzz"
Run Code Online (Sandbox Code Playgroud)
当它应该是:
@"EEE, dd MMM y HH:mm:ss zzz"
Run Code Online (Sandbox Code Playgroud)
关于 iOS 4 和 NDA 的部分是我认为我必须使用如下所示的NSDateFormatter方法:dateFormatFromTemplate:options:locale:
NSString *format = [NSDateFormatter dateFormatFromTemplate:@"EEE, d MMM yyyy HH:mm:ss zzz" options:0 locale:[NSLocale currentLocale]];
Run Code Online (Sandbox Code Playgroud)
但是,仅当您想要向未知区域设置的用户显示日期时,才应使用该方法。就我而言,我确切地知道日期格式是什么样子,并且我尝试解析日期字符串,以便可以将其存储在 CoreData 中。因此,这个方法并没有什么用处。
额外书签:仔细阅读此表,您一定会找出问题所在...Unicode 日期格式应遵循以下规范:http://unicode.org/reports/tr35/tr35-6.html#Date_Field_Symbol_Table
TL;DR格式字符串错误。噢!
| 归档时间: |
|
| 查看次数: |
18886 次 |
| 最近记录: |