【问题标题】:How to convert NSString to NSDate with specific format如何将 NSString 转换为具有特定格式的 NSDate
【发布时间】:2013-05-26 14:55:25
【问题描述】:

很抱歉,如果以前有人问过这个问题,但我做了很多检查,但似乎找不到答案。 :(

我有一个字符串“2013-05-7 05:53:15 +0000”,我想将其转换为 NSDate,以便将其与当前日期和时间进行比较。我不知道该怎么做。 :( 我成功转换了它,但它改变了字符串的外观,我希望它完全是 2013-05-7 05:53:15 +0000 ,因为这与我拥有其他 NSDate 项目的格式相同。

非常感谢任何和所有帮助。

我很困惑。 ;) 目标 C 的新手。 80 年代的旧 VB / 旧 C 程序员试图弄清楚这些东西。谢谢您的帮助。 :)

我的代码如下所示:

    NSDateFormatter *df1 = [[NSDateFormatter alloc] init];
//    [df1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
    [df1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    df1.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"EN"];
  NSDate *titemdate1 = [df1 dateFromString: itemdate];

我有两个日期。一个是应用程序运行的最后日期,另一个是我使用 JSON 拉下的项目的日期。我想比较两个日期(如上所述,它们是字符串格式)。当我对字符串进行 NSLog 时,它们看起来很完美,但是当我转换为 NSDate 进行比较时,我遇到了问题。有任何想法吗?

【问题讨论】:

  • 为什么是“无格式”,这是什么意思?最简单(到目前为止)的方法是使用 NSDateFormatter。
  • (而且 NSDate 对象没有“格式”——它们是纯时间。)
  • (我怀疑这是你的困惑。你总是可以使用为 NSDate 定义的方法比较两个 NSDate 对象。它们的打印方式与内部表示无关。)
  • 是的 - 我很困惑 ;) 请参阅上面的 m 编辑...也许这可以帮助你们了解我在哪里。对不起,如果我一无所知。我有点,这就是为什么我要寻求帮助! :) 我已经通过弄清楚它编写了整个应用程序,但最后一点我不能一起破解。 :(
  • 你没有定义你的“问题”是什么。可能与时区有关——当您使用 NSDateFormatter 时,假定当前时区,除非日期指定了时区。你的有,但你不是用那种格式读的。日期格式模式定义为here。您需要“yyyy-MM-dd HH:mm:ss Z”来读取该格式。

标签: ios nsstring nsdate nsdateformatter


【解决方案1】:

尝试使用下面的代码..

-(NSDate*)dateFromJsonString:(NSString*)string
{   
    NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
    [inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
    NSDate *xExpDate = [inputFormatter dateFromString:string];

    return xExpDate;
}

【讨论】:

    【解决方案2】:

    首先你应该知道,如果你将 dateString 转换为日期并做日期的 NSLog,它会返回 GMT 时间,在大多数情况下会与你的系统时间不同。因此,如果您以正确的格式获取字符串,那么日期格式化程序可能工作正常。要检查这一点,只需将格式化的日期转换为字符串并打印输出。

    NSLog(@"formatted date: %@",[df1 stringFromDate:titemdate1]);
    

    如果这没有改变任何东西并且输出仍然错误,请尝试更改格式化程序的格式。

    [df1 setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
    

    【讨论】:

      猜你喜欢
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多