3

我有一个日期字符串,我想将其转换为另一种格式。

原始日期字符串示例为: “2013-06-04 02:19:21 +0000”

我想将其转换为 “Wed, Jun 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,而与原始字符串中的月份值无关。

我哪里错了?

4

3 回答 3

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]
     */
于 2013-06-04T02:47:19.707 回答
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]);
于 2013-06-07T08:51:36.553 回答
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 在下面指出的那样。

于 2013-06-04T02:30:43.850 回答