2013-06-04 89 views
3

我有一个日期字符串,我想要转换为另一种格式。问题与日期格式化使用NSDateFormatter

原来的日期字符串的例子是: “2013年6月4日二时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

更改date_string“2013-06-04 02:19:21 +0000”在我编辑之前“2013-06-04 02:19:21 +0000”“ – NANNAV

回答

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在下面指出的那样。

+0

当天需要是'dd',而不是'DD'。 – rmaddy

+0

@rmaddy我刚刚补充说, –

12

在这里,你去我的朋友每个人都可能访问这个职位

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] 
    */ 
+0

比我的回答... +1 –

+0

+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]);