2013-06-04 86 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]);