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 和格式化日期...?的主要内容,如果未能解决你的问题,请参考以下文章