use timeIntervalSinceNow on runloop