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]];
您的代码中有两个问题:
- 您正在使用具有两种不同日期格式的同一日期格式化程序实例。
- 您设置的日期格式不适合您输入的日期。
这里是更正后的代码:
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 识别为有效月份。
我正在执行以下代码:
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]];
您的代码中有两个问题:
- 您正在使用具有两种不同日期格式的同一日期格式化程序实例。
- 您设置的日期格式不适合您输入的日期。
这里是更正后的代码:
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 识别为有效月份。