📜  纪元时间 (1)

📅  最后修改于: 2023-12-03 15:11:37.196000             🧑  作者: Mango

纪元时间

纪元时间是指一个历法系统中的起始时间,通常用来作为计算特定历法下的日期和时间的基准。不同历法系统的纪元时间可能不同,常见的历法系统包括公历、农历和伊斯兰历等。在计算机科学中,纪元时间是计算机系统用来表达日期和时间的一种方式,通常使用Unix纪元时间或者Windows纪元时间。

Unix纪元时间

Unix纪元时间指的是1970年1月1日00:00:00 UTC(协调世界时)这一时刻的时间戳,即以秒为单位的10位数字。Unix纪元时间由于使用广泛,因此成为了计算机科学领域中最常用的时间表示方法之一。

在Unix系统中,可以使用time函数获取当前时间的Unix纪元时间。

#include <time.h>
#include <stdio.h>

int main(void)
{
    time_t t = time(NULL);

    printf("Unix timestamp: %ld\n", (long) t);

    return 0;
}

输出结果:

Unix timestamp: 1624303491
Windows纪元时间

Windows纪元时间指的是1601年1月1日00:00:00 UTC这一时刻的时间戳,即以100纳秒为单位的17位数字。Windows纪元时间由于主要用于Windows系统中,因此在其他操作系统中使用较少。

在Windows系统中,可以使用GetSystemTimeAsFileTime函数获取当前时间的Windows纪元时间。

#include <windows.h>
#include <stdio.h>

int main(void)
{
    FILETIME ft;
    ULARGE_INTEGER uli;

    GetSystemTimeAsFileTime(&ft);
    uli.LowPart = ft.dwLowDateTime;
    uli.HighPart = ft.dwHighDateTime;

    printf("Windows timestamp: %llu\n", uli.QuadPart);

    return 0;
}

输出结果:

Windows timestamp: 138196793447210358
总结

纪元时间是计算机科学中常用的时间表示方式之一,通过时间戳的方式存储和计算日期和时间。Unix纪元时间和Windows纪元时间是常见的两种纪元时间,分别对应于Unix系统和Windows系统中的时间表示方式。在实际应用中需要根据具体情况选择使用哪一种纪元时间。