为什么不管输入如何,此函数都返回相同的值?

时间:2019-03-20 09:43:37

标签: objective-c

我有一个格式化日期字符串的方法。我遇到了一个问题,它仅返回我传递给它的第一个NSString的格式化版本。

代码:

  self.lastUpdatedLabel.text  =   [self convertTime:lastupdated];
  self.expiryDate.text        =   [self convertTime:expiryDate];

方法

- (NSString *)convertTime:(NSString *)date{

    NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
    [timeFormatter setDateFormat:@"HH:mm - dd/MM/yyyy"];
    [timeFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
    date = [timeFormatter stringFromDate:[[NSDate alloc]init] ];
    return date;
}

lastUpdatedLabel和到期日期都设置为expiryDate的值。该方法肯定会在每次调用时运行,因为输入不同,因此会产生不同的输出

1 个答案:

答案 0 :(得分:0)

您似乎需要更新代码以使用参数date

正如人们在评论中提到的那样,您使用的是当前时间[[NSDate alloc] init],而不是传入的date

如果lastUpdatedexpiryDate是NSDate,那么它将起作用。

- (NSString *)convertTime:(NSDate *)date{

    NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
    [timeFormatter setDateFormat:@"HH:mm - dd/MM/yyyy"];
    [timeFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    return [timeFormatter stringFromDate:date];
}

如果lastUpdatedexpiryDate是NSStrings,看起来就像是,那么您需要使用NSDateFormatter来将NSStrings转换为NSDates,该NSDateFormatter可以理解您拥有的NSString的格式...,然后将该NSDate传递给上面的代码,以创建格式正确的字符串作为输出。