读书笔记:计算机日期

根据《UNIX环境高级编程(第2版)》中文版P142摘要:

UNIX在这方面与其他操作系统的区别是:

    (a) 以国际标准时间而非本地时间计时;

    (b) 可自动进行转换,例如变换到夏时制;

    (c) 将时间和日期作为一个量值保存。

看了《C专家编程》作者所述,有点迷糊了,只怪当年地理没学好……但还是敲个代码实践下吧,保存的文件名 04.c:

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

int main(int argc, char *argv[])
{
    time_t currentTime;

    // 获取当前时间和日期,UTC时间(日历时间)
    currentTime = time(NULL);

    // ctime()函数把参数转换为当地时间,受时区影响
    printf("本地时间:%s", ctime(&currentTime));

    // localtime() 本地时间,受时区影响;用actime()将结果转换成字符串
    printf("本地时间:%s", asctime(localtime(&currentTime)));

    // gmtime()获取UTC时间,用actime()将结果转换成字符串,不受时区影响
    printf("UTC时间 :%s", asctime(gmtime(&currentTime)));

    return 0;
}

弄完代码,发现,原来《UNIX环境高级编程(第2版)》中文版中的写的日历时间是标准时间,百度百科定义如下:

日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。

这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。在C语言中通过time函数获得日历时间。

然后,编译并运行:

$ gcc 04.c -Wall
$ ./a.out
本地时间:Fri Apr 18 20:45:55 2014
本地时间:Fri Apr 18 20:45:55 2014
UTC时间 :Fri Apr 18 12:45:55 2014

至于新西兰时间,真迷糊了。这么奇怪的地理位置……继续迷糊吧

你可能感兴趣的:(读书笔记,《C专家编程》)