2010-05-06 9 views
37

나는 성공하지 않고 현재 시간을 TimeStamp로 가져 오려고합니다.현재 TimeStamp를 얻는 방법?

QDateTime setTime = QDateTime::fromString (QString("1970-07-18T14:15:09"), Qt::ISODate); 
QDateTime current = QDateTime::currentDateTime(); 
uint msecs = setTime.time().msecsTo(current.time()); 

return QString::number(msecs); 

출력은

Sunday, January 25th 1970, 03:17:35 (GMT) 
+0

타임 스탬프는 정확히 무엇을 의미합니까? 예상되는 출력을 제공하십시오. – chalup

+1

유닉스 시간 == 타임 스탬프 – user63898

답변

34

입니다 당신이이 기능을 찾고 있습니다 생각 :

이 코드가

http://doc.qt.io/qt-5/qdatetime.html#toTime_t

UINT의 QDateTime을 :: toTime_t() const

1970-01-01T00 : 00 : 00,> Coordinated Universal Time (Qt :: UTC) 이후로 경과 한 초 수로 datetime을 반환합니다.

표준 시간대를 지원하지 않는 시스템에서이 함수는 현지 시간이 Qt :: UTC 인 것처럼 동작합니다.

setTime_t()도 참조하십시오.

+1

나는 그것을했다 : QDateTime current = QDateTime :: currentDateTime(); uint timestame = current.toTime_t(); ,하지만 그 결과를 테스트 한 후 현재 날짜를주지 않았다 : http://www.4webhelp.net/us/timestamp.php – user63898

+2

그냥 QDateTime :: currentDateTime(). toTime_t()에 의해 반환 된 패스 문자열을 시도했다. 사이트 및 정확한 시간. 어쩌면이 사이트의 양식에 잘못된 시간대를 설정했을 수 있습니다. – VestniK

+0

동일한 코드를 사용하여 올바른 시간을 얻었습니다. – Jack

65

Qt 4.7에는 중간 단계없이 정확히 필요한 기능을하는 QDateTime::currentMSecsSinceEpoch() 정적 함수가 있습니다. 따라서 Qt 4.7 이상을 사용하는 프로젝트의 경우이를 권장합니다.

+9

이 값은 초가 아니라 ** 밀리 초 **의 간격을 반환합니다. 그래서 유닉스 시간이 아닙니다! – drzymala

+2

유닉스 시간이되어야하는 간단히 (QDateTime :: currentMSecsSinceEpoch()/1000) : P –

+0

이 대답은 나를 낭비하게 만듭니다! 이것은 @martini가 언급 한 것처럼 유닉스 시간이 아니기 때문이다. –

관련 문제