NSDateFormatter 的日期格式转换问题

Date format conversion issue with NSDateFormatter

我正在执行以下代码:

NSString *stringToFormat = ticket.date;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd MMMM yyyy"];

df.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"ro_RO"];
[df setDateFormat:@"dd.MM.yyyy"];
NSString *final = [df stringFromDate:[df dateFromString:stringToFormat]];
self.dateLabel.text = final;

问题是final是nil?为什么?

您在 ticket.date 中收到的格式不是您在代码中提供的格式。 "dd MMMM yyyy" <--- 这是您在代码中提供的格式,但可能不是您在 ticket.date

中收到的格式

请为您的票使用此格式dd.MMMM.yyyy hh:mm

 NSString *stringToFormat = ticket.date;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd.MMMM.yyyy hh:mm"];//16.Octombrie.2015 10:02
df.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"ro_RO"];

NSDateFormatter *localDF = [NSDateFormatter new];
localDF.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"ro_RO"];
[localDF setDateFormat:@"dd.MM.yyyy"];

NSString *final = [localDF stringFromDate:[df dateFromString:stringToFormat]];

您的代码中有两个问题:

  1. 您正在使用具有两种不同日期格式的同一日期格式化程序实例。
  2. 您设置的日期格式不适合您输入的日期。

这里是更正后的代码:

NSString *stringToFormat = @"16.Octombrie.2015 10:02";

NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"ro_RO"];
[df setDateFormat:@"dd.MMMM.yyyy hh:mm"];

NSDateFormatter *df2 = [[NSDateFormatter alloc] init];
df2.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"ro_RO"];
[df2 setDateFormat:@"dd.MM.yyyy"];

NSString *final = [df2 stringFromDate:[df dateFromString:stringToFormat]];

您还必须将语言环境设置为第一个日期格式化程序,以便格式化程序将 Octombrie 识别为有效月份。