NSDateFormatter的日期格式转换问题

时间:2015-10-16 11:09:20

标签: ios date 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;

问题是最终是否为零?为什么呢?

3 个答案:

答案 0 :(得分:1)

请为您的机票使用此格式 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 :(得分:0)

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

答案 2 :(得分:0)

代码中有两个问题:

  1. 您正在使用具有两种不同日期格式的日期格式化程序的相同实例。
  2. 您设置了错误的日期格式以适合您的输入日期。
  3. 以下是更正后的代码:

    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 识别为有效月份。