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 的值。当然,该方法每次调用时都会运行,由于输入不同而产生不同的输出
解决方案
看起来您需要更新代码以使用您的参数,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 传递给上面的代码以创建一个格式正确的字符串作为输出。
推荐阅读
- matrix - 从 MacAulay2 中的序列构造向量
- react-native - 为什么我的图像(和子组件)没有在 React Native 上使用 ImageBackground 显示?
- python-3.x - 如何删除google colab上本地上传的文件?
- mysql - SQL - 带条件的 min(date)
- javascript - 如何在 Javascript 中创建全局变量的新实例
- apache-spark - 如何在其他集群上向纱线提交作业?
- php - App Engine 标准:超时给了我 500 错误
- c# - 有没有办法直接从 sql 加载文件,我需要一种方法用 sql 中的其他图像替换图像
- java - 将动画的 layout_weight 从 0.3 扩展到 0.8
- react-native - 在 UIManager 中找不到 RNTMap