ローカル時間を(少なくとも現在のタイムゾーンを考慮して)少なくともミリ秒精度で取得するには、できるだけ速く行う必要があります。現地時間をミリ秒単位で取得する
gettimeofday()
の使用を避けたいですが、廃止された機能です。
だから、clock_gettime(CLOCK_REALTIME, ...)
を使用して時間を現在のタイムゾーンに調整する必要があるようですが、どうすればよいですか?そして、それを行うための最善のポイントはどこですか? clock_gettimeで取得したタイムスタンプを保存する前に、または前に現在のタイムゾーンのグレゴリオ暦で変換する前に?
編集:私の元のサンプルはget_clockとlocaltimeに参加しました - これに到達するより良い方法がありますか?
#include <time.h>
#include <stdio.h>
int main() {
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
struct tm* ptm;
ptm = localtime(&(ts.tv_sec));
// Tenths of milliseconds (4 decimal digits)
int tenths_ms = ts.tv_nsec/(100000L);
printf("%04d-%02d-%02d %02d:%02d:%02d.%04d\n",
1900 + ptm->tm_year, ptm->tm_mon + 1, ptm->tm_mday,
ptm->tm_hour, ptm->tm_min, ptm->tm_sec, tenths_ms);
}
しかし、現在のタイムゾーン調整はどうですか? – Luciano
タイムゾーンに関連する質問に対して自分の回答を編集しました。タイムゾーンを取得するコードを提供します。あなたの要件に合わせて調整する方法は、練習としてあなたに任せます。 – iqstatic
ありがとうございます。私はオリジナルのテストを表示するために質問を編集しました。私はこの質問をする意欲がありました。 – Luciano