我发现this虽然非常好。它似乎对我不起作用。
以下是我对代码的修改:
-(void) updateCountdown
{
NSString *dateString = @"2015-12-15 15:29:32";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:dateString];
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSLog(@"DATE: %@ %@",now, dateFromString);
NSDateComponents *componentMint = [calendar components:NSMinuteCalendarUnit fromDate:now];
self.lblMinitSetting.text=[NSString stringWithFormat:@"%02d",(60-componentMint.minute)];
}
时间正在更新,一切正常,但不考虑我指出的小时,分钟和秒标记。
那是:
NSString *dateString = @"2015-12-15 15:13:32";
NSString *dateString = @"2015-12-15";
无论我使用上面两行中的哪一行,剩余时间都是一样的。
此外,我喜欢同时获得小时,分钟和秒。
说下午1点,时间/日期表示当天下午2:30。
我希望小时的输出为1.5小时 我希望分钟的输出为90米 我希望秒的输出为5400秒 等等 不 1小时30分0秒
感谢您的帮助
修改
这里的主要错误是倒计时发生在特定日期并忽略时间。
我希望从现在到未来的某个特定时间倒计时。
答案 0 :(得分:3)
嘿,我在我的应用程序中完成了这项工作,看看是否有帮助
- (void)updateRemainingTimeFromDateString:(NSString *)strDate
forLabel:(UILabel *)label {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *newDate = [dateFormatter dateFromString:strDate];
NSString *strRemTime = @"";
int timeInterval = [newDate timeIntervalSinceDate:[NSDate date]];
if (timeInterval != 0) {
int noOfDays = timeInterval / (24 * 60 * 60);
timeInterval = timeInterval % (24 * 60 * 60);
int noOfHours = timeInterval / (60 * 60);
timeInterval = timeInterval % (60 * 60);
int noOfMinutes = timeInterval / 60;
int noOfSeconds = timeInterval % 60;
if (noOfDays != 0)
strRemTime = [NSString stringWithFormat:@"%dD", noOfDays];
if (strRemTime.length != 0)
strRemTime = [NSString stringWithFormat:@"%@ %02dH", strRemTime, noOfHours];
else
strRemTime = [NSString stringWithFormat:@"%02dH", noOfHours];
strRemTime = [NSString stringWithFormat:@"%@ %02dM %02dS", strRemTime, noOfMinutes, noOfSeconds];
}
[label setText:strRemTime];
}
抱歉,我没有按照你想要的方式对其进行格式化,但仍然不难做到,将日期与当前日期进行比较,标签在此方法中作为参数传递,因此它可以用方法
更新答案 1 :(得分:0)
-(void)callAfteroneSecond
{
NSString *strDatehere = [NSString stringWithFormat:@"%@",[Data_Dict objectForKey:@"d_expires"]];
NSDateFormatter *heredateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[heredateFormatter setDateFormat:@"yyyy-MM-dd"]; // set date formate with your dates
NSDate *datehere = [heredateFormatter dateFromString: strDatehere];
NSTimeInterval timeDifference = [datehere timeIntervalSinceDate:[NSDate date]];
double hours = timeDifference / 3600;
NSInteger remainder = ((NSInteger)timeDifference)% 3600;
double minutes = remainder / 60;
double seconds = remainder % 60;
_lbl_buyTime.text = [NSString stringWithFormat:@"%.0fh, %.0fm, %.0fs",hours,minutes,seconds];
}
答案 2 :(得分:0)
random_state