首页 > 解决方案 > 为什么无论输入如何,此函数都返回相同的值?

问题描述

我有一个格式化日期字符串的方法。我遇到了一个问题,它只返回我传递给它的第一个 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 的值。当然,该方法每次调用时都会运行,由于输入不同而产生不同的输出

标签: objective-c

解决方案


看起来您需要更新代码以使用您的参数,date.

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

如果lastUpdated并且expiryDate是 NSDates,那么这将起作用。

- (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];
}

如果lastUpdated并且expiryDate是 NSStrings,这就是你所拥有的,那么你需要将你的 NSStrings 转换为 NSDates,使用理解你拥有的 NSString 格式的 NSDateFormatter ......然后将该 NSDate 传递给上面的代码以创建一个格式正确的字符串作为输出。


推荐阅读