内容

localtime用来获取系统时间,精度为秒

    函数原型struct tm *localtime(const time_t * timep)

    头文件:#include <time.h>

struct tm
{
        int tm_sec;       /* 秒 – 取值区间为[0,59] */
        int tm_min;       /* 分 - 取值区间为[0,59] */
        int tm_hour;      /* 时 - 取值区间为[0,23] */
        int tm_mday;      /* 一个月中的日期 - 取值区间为[1,31] */
        int tm_mon;       /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
        int tm_year;      /* 年份,其值等于实际年份减去1900 */
        int tm_wday;      /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
        int tm_yday;      /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
        int tm_isdst;     /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
}



localtime_r也是用来获取系统时间,运行于Linux平台下



localtime_s也是用来获取系统时间,运行于windows平台下,与localtime_r只有参数顺序不一样



区别:

    localtime并不是线程安全的

    观察localtime和localtime_r的调用发现,localtime在使用时,我们只需定义一个指针,并不需要为指针申请空间,而指针必须要指向内存空间才可以使用,其实申请空间的动作由函数自己完成,这样在多线程的情况下,如果有另一个线程调用了这个函数,那么指针指向的struct tm结构体的数据就会改变。

     在localtime_s与localtime_r调用时,定义的是struct tm的结构体,获取到的时间已经保存在struct tm中,并不会受其他线程的影响。



参考文章:http://blog.csdn.net/u010087712/article/details/50731222