代码之家  ›  专栏  ›  技术社区  ›  Madhup Singh Yadav

NSdateFormatter在设备和模拟器上给出不同的值?什么是工作?

  •  5
  • Madhup Singh Yadav  · 技术社区  · 15 年前

    我正在使用nsdateformator,问题在于它的一致性。如果我使用kcfdateformtermediumstyle,它在模拟器中给出的格式为“2009年11月26日”,但在设备上给出的格式为“2009年11月26日”。

    现在我有一个问题,这是一种在不久的将来可信赖的转换手段,还是苹果公司的更新,它能再次改变这种风格?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Daniel Tull    15 年前

    NsdateFormatter根据设备上的国际设置,将日期格式化为用户首选的格式。因此,您永远不能期望这个字符串是一致的,因为日期在世界各地的显示方式不同。

    我发现将日期格式化为字符串(用于给WebServers等)的最佳方法是使用nsdateComponents并将其转换为字符串。

        2
  •  17
  •   Douglas Mayle    15 年前

    虽然上面提到的另一个答案在技术上是正确的,但它并不能提供您正在寻找的解决方案。虽然nsdateFormatter默认为使用用户区域设置(因此不会给您提供有用的结果),但您可以请求特定的区域设置以获得一致的结果:

    NSDateFormatter *frm = [[NSDateFormatter alloc] init];
    [frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
    
    NSLocale *en_US = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    [frm setLocale:en_US];
    [en_US release];