ついでにQDebugでデバッグ出力もする。
成果物
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 2018-06-27
- Qt 5.7.1
ソースコード
日付と時刻を同時にフォーマットできず冗長。DateTimeクラスなのに……。dateTime.toString("yyyy-MM-dd HH:mm:ss")
としたかった。C#ならそうなんだけどなぁ。
UTC
QDateTime dateTimeUtc = QDateTime::currentDateTimeUtc(); qDebug()<<dateTimeUtc.date().toString("yyyy-MM-dd"); qDebug()<<dateTimeUtc.time().toString("HH:mm:ss");
ローカル時刻
QDateTime dateTime = QDateTime::currentDateTime(); qDebug()<<dateTime.date().toString("yyyy-MM-dd"); qDebug()<<dateTime.time().toString("HH:mm:ss");
解決までに調査したこと
1
#include <stdio.h> #include <time.h> int main() { time_t now = time(NULL); struct tm *pnow = localtime(&now); printf("%2d年%2d月%2d日", pnow->tm_year+1900, pnow->tm_mon + 1, pnow->tm_mday); return 0; }
QtWidgetプロジェクトではC言語のヘッダファイルをインクルードできないっぽい。Qt Widget固有の方法を調査せねばならないようだ。
2
QDateTime test_time; test_time.setTime_t(1433984121); qDebug()<<test_time.toString("yyyy/MM/dd hh:mm:ss");
デバッグ出力はこう書くのか。エポックタイムの取得方法が不明。
3
QDateTime dateTime = QDateTime::currentDateTimeUtc(); datestr = dateTime.date().toString("yyyy/MM/dd"); timestr = dateTime.time().toString("hh:mm:ss UTC");
これだ! が、変数の型宣言がないし、includeもないためエラーになる。以下でincludeを調査。
あとはQt Creatorのエディタでインテリセンスによりメソッド候補を表示させれば他のメソッドも見つかる。
学んだこと
#include
<QDebug>
<QDateTime>
QDateTime
で現在日時を取得する方法QDebug
でデバッグ出力する方法
所感
時刻処理は汎用的なものだが、Qtライブラリ固有のコードになってしまう。これは調査や実装に時間がかかりそう。