Programming

1970 년 이후 현재 타임 스탬프를 밀리 초 단위로 얻는 방법

procodes 2020. 7. 28. 21:59
반응형

1970 년 이후 현재 타임 스탬프를 밀리 초 단위로 얻는 방법


Java에서는 System.currentTimeMillis()epoch 시간 이후 현재 시간 소인을 밀리 초 단위로 가져 오는 데 사용할 수 있습니다.

현재 시간과 1970 년 1 월 1 일 자정 (UTC)의 차이 (밀리 초)입니다.

C ++에서 같은 것을 얻는 방법?

현재 이것을 사용하여 현재 타임 스탬프를 얻습니다.

struct timeval tp;
gettimeofday(&tp, NULL);
long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds

cout << ms << endl;

이게 옳은가 아닌가?


C ++ 11 라이브러리에 액세스 할 수있는 경우 라이브러리를 확인하십시오 std::chrono. Unix Epoch 이후 다음과 같이 밀리 초를 얻는 데 사용할 수 있습니다.

#include <chrono>

// ...

using namespace std::chrono;
milliseconds ms = duration_cast< milliseconds >(
    system_clock::now().time_since_epoch()
);

사용하다 <sys/time.h>

struct timeval tp;
gettimeofday(&tp, NULL);
long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;

이것을 참조 하십시오 .


이 답변은 C ++을 사용 하는 Oz 와 비슷합니다. 오즈에서<chrono> 얻지 못했습니다. 그러나...

이 페이지 하단 에서 원본 스 니펫을 집어 들고 완전한 콘솔 앱으로 약간 수정했습니다. 나는이 릴 '을 사용하는 것을 좋아합니다. VB 또는 덜 현대적이고 독자 친화적 인 코드를 사용하지 않고 실제 밀리 초 단위로 시대를 맞이하기 위해 Windows에서 많은 스크립트를 작성하고 신뢰할 수있는 도구가 필요한 경우 환상적입니다.

#include <chrono>
#include <iostream>

int main() {
    unsigned __int64 now = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
    std::cout << now << std::endl;
    return 0;
}

gettimeofday를 사용하면 long long으로 캐스트해야합니다. 그렇지 않으면 에포크 이후 오버 플로우가 발생하여 실제 밀리 초가되지 않습니다. long int msint = tp.tv_sec * 1000 + tp.tv_usec / 1000; 에포크 이후 8 일이 지난 767990892와 같은 숫자를 제공합니다. ;-).

int main(int argc, char* argv[])
{
    struct timeval tp;
    gettimeofday(&tp, NULL);
    long long mslong = (long long) tp.tv_sec * 1000L + tp.tv_usec / 1000; //get current timestamp in milliseconds
    std::cout << mslong << std::endl;
}

C ++ 11부터 다음을 사용할 수 있습니다 std::chrono.

  • 현재 시스템 시간을 얻습니다. std::chrono::system_clock::now()
  • 신기원부터 시간을 가지십시오 : .time_since_epoch()
  • 기본 단위를 밀리 초로 변환하십시오. duration_cast<milliseconds>(d)
  • 오버플로를 피하기 위해 std::chrono::milliseconds정수로 변환uint64_t
#include <chrono>
#include <cstdint>
#include <iostream>

uint64_t timeSinceEpochMillisec() {
  using namespace std::chrono;
  return duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count();
}

int main() {
  std::cout << timeSinceEpochMillisec() << std::endl;
  return 0;
}

기능을 포함 <ctime>하고 사용하십시오 time.

참고 URL : https://stackoverflow.com/questions/19555121/how-to-get-current-timestamp-in-milliseconds-since-1970-just-the-way-java-gets

반응형