UIDatePicker、NSTimer 和格式化日期...?

Posted

技术标签:

【中文标题】UIDatePicker、NSTimer 和格式化日期...?【英文标题】:UIDatePicker, NSTimer, & Formatting the date...? 【发布时间】: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。现有的例子不胜枚举。 【参考方案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;

【讨论】:

以上是关于UIDatePicker、NSTimer 和格式化日期...?的主要内容,如果未能解决你的问题,请参考以下文章

根据应用程序设置而不是设备设置在 UIDatepicker 中以 12 和 24 小时格式显示时间

如何创建自定义 UIDatePicker 控件

目标 c:通过按钮传递 NSTimer

UIDatePicker 选择月份和年份

UIDatePicker 泄漏

UIDatePicker,根据今天的日期设置最大和最小日期