Objective c 版本10.4和10.5之间的NSDateFormatter问题

Objective c 版本10.4和10.5之间的NSDateFormatter问题,objective-c,cocoa,macos,date,Objective C,Cocoa,Macos,Date,我正在创建一个需要在10.4及以上版本上运行的应用程序。具有格式正确的日期字符串是至关重要的。当我在10.5调试中运行我的程序时,一切都很好;我得到的日期正是我想要的: Jul 13, 2010 16 16是一个小时,没有分钟,这是我特别需要的。然后,当我在10.4中运行它时,我得到: 07/13/10 生成此日期的代码如下所示: NSDateFormatter *format = [[NSDateFormatter alloc] init]; [format setDateF

我正在创建一个需要在10.4及以上版本上运行的应用程序。具有格式正确的日期字符串是至关重要的。当我在10.5调试中运行我的程序时,一切都很好;我得到的日期正是我想要的:

 Jul 13, 2010 16
16是一个小时,没有分钟,这是我特别需要的。然后,当我在10.4中运行它时,我得到:

 07/13/10 
生成此日期的代码如下所示:

  NSDateFormatter *format = [[NSDateFormatter alloc] init];
  [format setDateFormat:@"MMM dd, yyyy HH"];

  NSDate *newNow = [[NSDate alloc] init];
  NSString *dateString = [format stringFromDate:newNow];
在阅读了一些相关文档(下面的链接)之后,似乎10.4有一种独特的格式,与10.3、10.5和10.6有所不同。引用链接:

“格式字符串使用Unicode标准中的格式模式(对于Mac OS X v10.5,此参考是版本tr35-6;对于Mac OS X v10.4,使用版本tr35-4)。”

我已经阅读了文档,看起来我的Unicode格式还可以,但是我仍然得到了这个奇怪的结果

有什么帮助吗


我认为您需要使用
+[NSDateFormatter setDefaultFormatterBehavior:
-[NSDateFormatter setFormatterBehavior:
将格式化程序行为设置为
nsdateformatterbehavior:

编辑:我的推理基于NSDateFormatter概述中的评论,其中说:

默认情况下,在Mac OS X v10.4上 NSDateFormatter的实例具有 与Mac OS X上的行为相同 版本10.0至10.3。在MacOSX上 v10.5及更高版本,NSDateFormatter 默认为10.4+行为


这完全奏效了。对于必须尝试此操作的任何其他人,我要补充一点,您需要放置//[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior104];在所有事情之前,包括alloc和init。