[ios] 아이폰 : 현재 밀리 초를 얻는 방법?

현재 시스템 시간 (밀리 초)을 얻는 가장 좋은 방법은 무엇입니까?



답변

[[NSDate date] timeIntervalSince1970];

에포크 이후의 초 수를 double로 리턴합니다. 분수 부분에서 밀리 초에 액세스 할 수 있다고 확신합니다.


답변

상대 타이밍 (예 : 게임 또는 애니메이션)에 이것을 사용하려면 CACurrentMediaTime ()을 사용하는 것이 좋습니다

double CurrentTime = CACurrentMediaTime();

권장되는 방법은 무엇입니까? NSDate네트워크 동기화 시계에서 가져오고 네트워크와 다시 동기화 할 때 가끔 딸꾹질합니다.

현재 절대 시간을 초 단위로 반환합니다.


소수 부분 원할 경우 (애니메이션 동기화시 종종 사용됨)

let ct = CACurrentMediaTime().truncatingRemainder(dividingBy: 1)


답변

iPhone 4S 및 iPad 3 (릴리스 빌드)에서 다른 모든 답변을 벤치마킹했습니다. CACurrentMediaTime작은 마진으로 오버 헤드가 가장 적습니다. 인스턴스화 오버 헤드 timeIntervalSince1970로 인해 다른 것보다 훨씬 느리지 만 NSDate많은 사용 사례에는 중요하지 않을 수 있습니다.

CACurrentMediaTime오버 헤드를 최소화하고 Quartz Framework 종속성을 추가하지 않아도되는 것이 좋습니다 . 또는 gettimeofday이식성이 우선 순위 인 경우.

아이폰 4S

CACurrentMediaTime: 1.33 µs/call
gettimeofday: 1.38 µs/call
[NSDate timeIntervalSinceReferenceDate]: 1.45 µs/call
CFAbsoluteTimeGetCurrent: 1.48 µs/call
[[NSDate date] timeIntervalSince1970]: 4.93 µs/call

아이 패드 3

CACurrentMediaTime: 1.25 µs/call
gettimeofday: 1.33 µs/call
CFAbsoluteTimeGetCurrent: 1.34 µs/call
[NSDate timeIntervalSinceReferenceDate]: 1.37 µs/call
[[NSDate date] timeIntervalSince1970]: 3.47 µs/call


답변

Swift에서는 다음과 같이 기능을 수행 할 수 있습니다.

func getCurrentMillis()->Int64{
    return  Int64(NSDate().timeIntervalSince1970 * 1000)
}

var currentTime = getCurrentMillis()

그가에서 잘 작동하지만 스위프트 3.0 그러나 우리는 수정하고 사용할 수있는 Date대신 클래스 NSDate3.0

스위프트 3.0

func getCurrentMillis()->Int64 {
    return Int64(Date().timeIntervalSince1970 * 1000)
}

var currentTime = getCurrentMillis()


답변

지금까지 gettimeofday일부 간격 평가 (예 : 프레임 속도, 렌더링 프레임 타이밍 …)를 수행하려는 경우 iOS (iPad)에서 좋은 해결책을 찾았 습니다.

#include <sys/time.h>
struct timeval time;
gettimeofday(&time, NULL);
long millis = (time.tv_sec * 1000) + (time.tv_usec / 1000);


답변

현재 날짜의 밀리 초를 가져옵니다.

스위프트 4+ :

func currentTimeInMilliSeconds()-> Int
    {
        let currentDate = Date()
        let since1970 = currentDate.timeIntervalSince1970
        return Int(since1970 * 1000)
    }


답변

스위프트 2

let seconds = NSDate().timeIntervalSince1970
let milliseconds = seconds * 1000.0

스위프트 3

let currentTimeInMiliseconds = Date().timeIntervalSince1970.milliseconds