【发布时间】:2015-02-06 13:16:05
【问题描述】:
给定以下程序:
#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
NSDateFormatter *f = [[NSDateFormatter alloc] init];
f.timeStyle = NSDateFormatterNoStyle;
f.dateStyle = NSDateFormatterMediumStyle;
f.calendar = [NSCalendar autoupdatingCurrentCalendar];
f.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
f.locale = [NSLocale localeWithLocaleIdentifier:@"ru"];
NSDate *feb_01_2012 = [NSDate dateWithTimeIntervalSince1970:1328054400];
NSLog(@"%@", [f stringFromDate:feb_01_2012]);
}
}
在 OS X Yosemite 上编译时会产生以下输出:
2014-12-08 22:31:49.109 Untitled[14149:1398844] 1 февр. 2012 г.
然而,当在 OS X Mavericks 上编译时,它产生的输出略有不同(注意当天的零填充):
2014-12-08 22:27:01.890 formatter[54709:507] 01 февр. 2012 г.
任何想法为什么会发生这种情况?错误仅针对 ru 语言环境显示:-\
更新:找到了一种在两台机器上获得相同数量的零的方法。使用+dateFormatFromTemplate:options:locale: 会得到预期的结果:
NSLocale *l = [NSLocale localeWithLocaleIdentifier:@"ru"];
f.locale = l;
f.dateFormat = [NSDateFormatter dateFormatFromTemplate:@"yMMMd"
options:0
locale:l];
【问题讨论】:
标签: osx-mavericks nsdateformatter osx-yosemite