gpt4 book ai didi

ios - 如何显示当前日期与过去日期之间的差异?

转载 作者:行者123 更新时间:2023-11-29 03:36:45 24 4
gpt4 key购买 nike

我是个新手,作为我学习目标的一部分,我决定开发这个简单的应用程序 - 我想显示过去的日期与当前日期之间的时间 - 以及当前的日期显示不断更新,即秒和分钟等,不断计数。

这是我到目前为止所拥有的:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss '+0000'"];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
NSDate *birthDate = [dateFormat dateFromString:@"Fri, 17 Feb 1989 13:00:00 +0000"];
NSDate *todaysDate = [NSDate date];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger timeComponents = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSSecondCalendarUnit;

NSDateComponents *comps = [gregorian components:timeComponents fromDate:birthDate toDate:todaysDate options:0];

NSInteger numberOfYears = [comps year];
NSInteger numberOfMonths = [comps month];
NSInteger numberOfDays = [comps day];
NSInteger numberOfHours = [comps hour];
NSInteger numberOfSeconds = [comps second];

NSString *yearsString = [NSString stringWithFormat:@"%ld", (long)numberOfYears];
_years.text = yearsString;

NSString *monthsString = [NSString stringWithFormat:@"%ld", (long)numberOfMonths];
_months.text = monthsString;

NSString *daysString = [NSString stringWithFormat:@"%ld", (long)numberOfDays];
_days.text = daysString;

NSString *hoursString = [NSString stringWithFormat:@"%ld", (long)numberOfHours];
_hours.text = hoursString;

NSString *secondsString = [NSString stringWithFormat:@"%ld", (long)numberOfSeconds];
_seconds.text = secondsString;
}

我有两个问题:

  1. 秒的输出无法正确显示 - 秒以千位显示,如“1176”?所有其他日期组件似乎都正确显示。
  2. 输出不会更新 - 它显示固定数量。我还没有真正尝试过设置它,因为我不确定实现它的“正确”方法是什么 - 我将不胜感激对此的一些指示/方向:)

最佳答案

  1. 将 NSMinuteCalendarUnit 合并到您的组件标志中。
  2. viewDidLoad 运行一次。如果您想连续运行此代码,则需要循环运行它(不好)或设置一个计时器再次运行它(好)。

我建议将所有与时间相关的代码移至一个新方法中,可能称为 - (void)showTime。然后你可以创建一个像这样的计时器:

NSTimer *timer = [NSTimer ScheduledTimerWithTimeInterval:1 目标:self 选择器:@selector(showTime) userInfo:nil 重复:YES];

将此计时器存储在类的实例变量中,以便稍后当您不再需要它时可以使其无效并为零。

关于ios - 如何显示当前日期与过去日期之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19071233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com