NSDate转换

时间:2011-11-22 12:48:26

标签: iphone objective-c nsdate

我正在尝试将日期从MMM dd,YYYY转换为YYYY-MM-dd。

    NSDateFormatter *importDateFormat = [[NSDateFormatter alloc] init];
    [importDateFormat setDateFormat:@"MMM dd, YYYY"];

    NSDate *importedDate = [importDateFormat dateFromString:expiresOn.text];

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"YYYY-MM-dd"];

    NSString *dateImported = [dateFormat stringFromDate:importedDate];

从expiresOn.text(标签)引入的日期是: 2012年10月8日

转换后dateImported中包含的日期是: 2011-12-25

我错过了什么吗?我的日期格式化工具有问题吗?

1 个答案:

答案 0 :(得分:3)

有两件事是错的,首先是yyyy而不是YYYYY,因为你要将月份解析成一个单词,你需要告诉日期格式化程序期望哪种语言。

NSDateFormatter *importDateFormat = [[NSDateFormatter alloc] init];
[importDateFormat setDateFormat:@"MMM dd, yyyy"];
importDateFormat.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en"] autorelease];

NSDate *importedDate = [importDateFormat dateFromString:expiresOn.text];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSString *dateImported = [dateFormat stringFromDate:importedDate];

如果您使用ARC,请删除NSLocale中的自动释放部分;如果您不使用ARC,则需要发布NSDateFormatter