如何获得当前秒数完成小时?

时间:2016-11-14 14:53:56

标签: ios objective-c

我想知道完成一小时的剩余时间。无论哪个时间是什么时候?

如果它的05:01:00那么它应该给3540秒 如果它的11:58:40那么它会给出80秒,依此类推。我试图在谷歌上找到它但无法找到它。 提前谢谢。

3 个答案:

答案 0 :(得分:4)

NSCalendar有方法可以进行这种日期数学运算:

NSDate *now = [NSDate date];
NSCalendar *calendar =  [NSCalendar currentCalendar];
// find next date where the minutes are zero
NSDate *nextHour = [calendar nextDateAfterDate:now matchingUnit:NSCalendarUnitMinute value:0 options:NSCalendarMatchNextTime];
// get the number of seconds between now and next hour
NSDateComponents *componentsToNextHour = [calendar components:NSCalendarUnitSecond fromDate:now toDate:nextHour options:0];
NSLog(@"%ld", componentsToNextHour.second);

答案 1 :(得分:0)

@Vadian的回答非常好。 (投票)

但它需要iOS 8或更高版本。

使用可用于较旧操作系统版本的NSCalendarNSDateComponents,还有其他方法可以做到这一点。

您可以使用componentsFromDate获取当前日期的月,日,年和小时,然后递增小时值并使用NSCalendar方法dateFromComponents:将您转换为调整后的组件回到了日期。

答案 2 :(得分:-2)

CREATE OR REPLACE  FUNCTION incdouble(value integer)
  RETURNS RECORD AS
  $BODY$
  DECLARE
     linc integer;
     ret  RECORD;  
  BEGIN
    linc := value + 1;
    SELECT linc,linc*2 INTO ret;
    RETURN ret;
  END;
$BODY$
LANGUAGE plpgsql ;
select * from test t,incdouble(t.value) as (i integer ,d integer)

使用正确的时间和日期填写以秒为单位

编辑:另一种方法是计算currenthour并以整数形式返回。然后在下面返回的NSInteger中添加一个(你必须确保处理它在午夜之后的情况!)

NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"];
NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"];

NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];