【C言語】現在時刻をマイクロ秒で取得する方法【Windows/UNIX】

この記事では、Windows環境とUNIX環境で現在の時刻を取得する方法について解説します。

システム時刻の取得方法とマイクロ秒の取得方法をそれぞれ紹介しますので、C言語の初心者の方でも簡単に理解できる内容です。

目次から探す

Windows環境での現在時刻の取得方法

Windows環境で現在の時刻を取得する方法には、システム時刻の取得とマイクロ秒の取得の2つの方法があります。

システム時刻の取得

Windowsでは、システム時刻を取得するためにGetSystemTime関数を使用します。

この関数は、現在の日付と時刻をUTC(協定世界時)で取得します。

以下は、システム時刻を取得するためのサンプルコードです。

#include <stdio.h>
#include <windows.h>
int main() {
    SYSTEMTIME st;
    GetSystemTime(&st);
    printf("現在の日付と時刻: %04d/%02d/%02d %02d:%02d:%02d\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
    return 0;
}

このコードを実行すると、現在の日付と時刻が表示されます。

マイクロ秒の取得

Windowsでは、マイクロ秒単位の時刻を取得するためにGetSystemTimePreciseAsFileTime関数を使用します。

この関数は、システム時刻をファイルタイム形式(100ナノ秒単位)で取得します。

以下は、マイクロ秒単位の時刻を取得するためのサンプルコードです。

#include <stdio.h>
#include <windows.h>
int main() {
    FILETIME ft;
    ULARGE_INTEGER uli;
    GetSystemTimePreciseAsFileTime(&ft);
    uli.LowPart = ft.dwLowDateTime;
    uli.HighPart = ft.dwHighDateTime;
    // マイクロ秒単位の時刻に変換
    ULONGLONG microseconds = uli.QuadPart / 10;
    printf("現在のマイクロ秒単位の時刻: %llu\n", microseconds);
    return 0;
}

このコードを実行すると、現在のマイクロ秒単位の時刻が表示されます。

以上が、Windows環境での現在時刻の取得方法です。

システム時刻の取得とマイクロ秒の取得の2つの方法を使用することで、正確な時刻情報を取得することができます。

UNIX環境での現在時刻の取得方法

システム時刻の取得

UNIX環境では、システム時刻を取得するためにtime関数を使用します。

time関数は、1970年1月1日午前0時からの経過秒数を返します。

#include <stdio.h>
#include <time.h>
int main() {
    time_t currentTime;
    time(&currentTime);
    printf("現在のシステム時刻: %ld\n", currentTime);
    return 0;
}

上記のコードでは、time関数を使用して現在のシステム時刻を取得し、その値を表示しています。

time_t型変数currentTimeに現在の時刻が格納されます。

%ldlong型の値を表示するためのフォーマット指定子です。

マイクロ秒の取得

UNIX環境では、マイクロ秒単位の時刻を取得するためにgettimeofday関数を使用します。

gettimeofday関数は、struct timeval構造体に秒とマイクロ秒の情報を格納します。

#include <stdio.h>
#include <sys/time.h>
int main() {
    struct timeval currentTime;
    gettimeofday(&currentTime, NULL);
    printf("現在のマイクロ秒: %ld\n", currentTime.tv_usec);
    return 0;
}

上記のコードでは、gettimeofday関数を使用して現在のマイクロ秒を取得し、その値を表示しています。

struct timeval構造体のtv_usecメンバにマイクロ秒の値が格納されます。

%ldlong型の値を表示するためのフォーマット指定子です。

以上がUNIX環境での現在時刻の取得方法です。

システム時刻の取得にはtime関数を、マイクロ秒の取得にはgettimeofday関数を使用します。

これらの関数を適切に利用することで、正確な時刻情報を取得することができます。

目次から探す