【问题标题】:NSString to NSDate and then changing the formatNSString 到 NSDate 然后改变格式
【发布时间】:2012-11-03 15:01:43
【问题描述】:

我以为我已经完成了“难”的部分,但似乎并非如此。我从 RSS 提要中检索日期,我想将其转换为 NSDate,然后将其更改为简单格式 (MM/DD/YYYY)。日期在 RSS 提要中采用以下格式:

2012 年 11 月 1 日星期四 17:41:56 CST

我已成功将其转换为 NSDate。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"E, d MMM yyyy HH:mm:ss zzz"];
NSDate *date = [[NSDate alloc] init];
//[df setDateStyle:NSDateFormatterMediumStyle]; Using these seems to change what it expects from the string I guess?
//[df setTimeStyle:NSDateFormatterMediumStyle];
date = [df dateFromString:string];
[self.tempItem setPubDate:[df dateFromString:string]];
NSLog(@"%@", [df dateFromString:string]);

所以我的日期很好,但就像我之前所说的,我只想将它转换为一个简单的日期。 当我使用 setDateStyle 我最终得到空值。当我不使用它时,我会得到正确的日期,只是不是我想要的格式。

【问题讨论】:

    标签: objective-c nsstring nsdate


    【解决方案1】:

    只是不是我想要的格式。

    因为NSLog() 不知道格式 - 它会怎样? NSDate 没有任何内置的“格式”。您必须再次使用NSDateFormatter 从日期对象中获取字符串。基本上你必须使用的工作流程大致是:

    • 从 RSS 提要中检索 NSString
    • 创建日期格式化程序
    • 根据字符串的格式设置其格式
    • 从日期格式化程序中获取NSDate 对象
    • NSDateFormatter 的格式重新设置为您想要的格式
    • 使用日期和日期格式化程序对象获取格式正确的NSString

    【讨论】:

    • 谢谢。我最初并不理解格式化实际上并没有改变 NSDate 对象,而是它在输出字符串等时的显示方式。因为无论如何这都是在 tableview 上进行的,所以我现在知道我可以一直等到我将标签文本设置为我想要的格式。
    【解决方案2】:

    只需创建另一个 NSDateFormatter 来将 NSDate 转换为 NSString

    NSDateFormatter *dfSimple = [[NSDateFormatter alloc] init];

    [dfSimple setTimeStyle:NSDateFormatterNoStyle];

    [dfSimple setDateStyle:NSDateFormatterMediumStyle];

    NSLog(@"%@", [dfSimple stringFromDate: date]);

    这种情况下最好创建2个NSDateFormatter对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多