【问题标题】:Objective-C String(yyyy-mm-dd) to NSDateObjective-C 字符串(yyyy-mm-dd) 到 NSDate
【发布时间】:2012-02-17 15:25:55
【问题描述】:

我的应用程序是一个 JSON 代码,其中包含字符串类型的日期。 (如“2011-10-01”)。 我想知道如何将其转换为 NSDate? 它需要以不同的时间格式显示,例如“2011 年 10 月 1 日”。

例如。此代码不起作用:

   NSString *date1 = @"2010-11-12";
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MMMM-dd"];
    NSDate *date2 = [dateFormat dateFromString:date1];
    NSString *strdate = [dateFormat stringFromDate:date2];

【问题讨论】:

  • 你能详细说明“不起作用”吗?如果问题只是 strdate 的格式与原始格式相同,那是因为您使用的是相同的格式化程序。如果您希望 strdate 看起来与 date1 不同,请使用具有不同格式的第二个格式化程序。

标签: iphone objective-c ios date ios5


【解决方案1】:

你可以试试这个

NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];

[df setDateFormat:@"dd MM yyyy"];    

NSString *todayString = [df stringFromDate:[NSDate date]];

NSDate *someDate=[NSDate date];

NSString *targetDateString = [df stringFromDate:someDate];

NSLog(@"date:%@",targetDateString);

【讨论】:

    【解决方案2】:

    Tug 在his blog post on the subject 中写道:

    Objective-C 和 iOS SDK 提供了一个类来帮助格式化日期 (编组和解组),这个类是NSDateFormatter。不 令人惊讶的是,NSDateFormatter 使用了Unicode Date Format 模式。

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *date = [dateFormatter dateFromString:publicationDate ];
    [dateFormatter release];
    

    在这种情况下,publicationDate 是一个 NSString。

    【讨论】:

    • 谢谢,效果很好。不需要带有 ARC 的发布行。只是为了帮助像我这样的未来新秀。
    • 有没有人注意到,或者只有我知道,此代码将日期减 1。
    【解决方案3】:

    使用NSDateFormatter。适当的方法是dateFromString:。看看文档:)

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      相关资源
      最近更新 更多