【问题标题】:UIDatePicker, NSTimer, & Formatting the date...?UIDatePicker、NSTimer 和格式化日期...?
【发布时间】:2013-08-30 22:42:44
【问题描述】:

我有一个 UIDatePicker 和一个 UILabel 来显示所选日期。现在,日期显示为“2013-8-30 10:30:54 +0000”。我希望日期改为按“dd:hh:mm:ss”的顺序显示为“00:00:00:00”。然后我想从 IBAction 启动一个计时器,该计时器从显示中的“dd:hh:mm:ss”中选择的日期开始倒计时。我可以分析的任何帮助或参考代码将不胜感激。我是新手,完全是自学的。提前致谢。干杯!

@synthesize picker;
@synthesize label;

-(IBAction)displayDate:(id)sender {
    NSDate *selected = [picker date];
    NSString *date = [selected description];
    self.label.text = date;
}

- (void)viewDidLoad {
    NSDate *now = [NSDate date];
    [picker setDate:now animated:YES];
    self.label.text = [now description];
}
@end

【问题讨论】:

  • 使用NSDateFormatter 以所需格式显示NSDate。现有的例子不胜枚举。

标签: ios nstimer uidatepicker countdown


【解决方案1】:

第一:

要以您想要的格式显示日期,只需使用NSDateFormatter,如下例所示:

self.formatter = [NSDateFormatter new]; //save a property of NSDateFormatter type, you'll use this before
[formatter setDateFormat:@"dd:HH:mm:ss"];

self.date = [NSDate date]; //save in a property, this will be your start date
self.label.text = [formatter stringFromDate:self.date];

第二:

要执行类似倒计时的行为,您可以从日期中减去一秒(或更多,取决于您想要什么),再次将新日期转换为字符串并更新您的标签。以下是你的做法:

在某处设置一个 NSTimer:

[NSTimer scheduledTimerWithTimeInterval:1.0
                                 target:self
                               selector:@selector(refreshLabel)
                               userInfo:nil
                                repeats:YES];

并实现方法refreshLabel

-(void)refreshLabel
{
    NSDate *dateCountDown = [NSDate dateWithTimeIntervalSince1970:[self.date timeIntervalSince1970] - 1]; //the start-up date minus 1 sec.
    self.label.text = [formatter stringFromDate:dateCountDown];
    self.date = dateCountDown;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多