我有一个日期字符串,我想将其转换为另一种格式。
原始日期字符串示例为: “2013-06-04 02:19:21 +0000”
我想将此转换为 “星期三,6月4日”
NSString * date_string = @"2013-06-04 02:19:21 +0000";
NSDateFormatter *complexdateFormater = [[NSDateFormatter alloc] init];
[complexdateFormater setDateFormat:@"yyyy-M-DD HH:mm:ss Z"];
NSDate* complexdate = [complexdateFormater dateFromString:date_string];
NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"EE, MMM d" options:0
locale:[NSLocale currentLocale]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:formatString];
NSString *todayString = [dateFormatter stringFromDate:complexdate];
但是上面案例的今天字符串打印出来: 无论原始字符串中的月份值如何,月份为Jan。
我哪里错了?
答案 0 :(得分:13)
在这里,你去找我的朋友
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEE, MMM dd"];
NSString *theDate = [dateFormat stringFromDate:date1];
可能访问此帖子的其他所有人的日期格式化程序参考。如果有帮助的话,请加以评估!
/*
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]
*/
答案 1 :(得分:1)
用这个代替你的代码......
NSString * date_string = @"2013-06-04 02:19:21 +0000";
NSDateFormatter *complexdateFormater = [[NSDateFormatter alloc] init];
[complexdateFormater setDateFormat:@"EEE, MMM dd"];
NSDate* complexdate = [complexdateFormater dateFromString:date_string];
如果你想检查日期而不是NSLog,因为NSLog只返回GMT格式的日期......
NSLog(@"Converted date: %@", [complexdateFormater stringFromDate:complexDate]);
答案 2 :(得分:0)
首先,你在+0000之后有两个引号。我不确定这篇文章中是否有拼写错误,但它可能会产生影响。
这一行:
[complexdateFormater setDateFormat:@"yyyy-M-DD HH:mm:ss Z"];
应该是这样的:
[complexdateFormater setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
在您的日期字符串中,月份为06而不仅仅是6,因此您需要两个月的数字:)此外,您需要DD为dd,正如rmaddy在下面指出的那样。