作者:彼岸花2011的冬天_290 | 来源:互联网 | 2023-06-25 21:53
localtime()与gmtime()函数都可以将时间戳time_t类型的时间换算成分解时间structtm。区别在于gmtime()是转换成标准时间,即UTC时间
localtime() 与gmtime()函数都可以将时间戳time_t类型的时间换算成分解时间struct tm 。区别在于
gmtime()是转换成标准时间,即UTC时间
localtime() 会考虑时区的因素。稍后代码实现演示。
####
【localtime()】
函数原型在time.h中,localtime_r()版本 增加了一个 struct tm* 类型的参数,用于保存结果
/* Return the `struct tm' representationof *TIMER in the local timezone. */
extern struct tm *localtime (__const time_t *__timer) __THROW;
__END_NAMESPACE_STD/* Return the `struct tm' representation of *TIMER in local time,using *TP to store the result. */
extern struct tm *localtime_r (__const time_t *__restrict __timer,struct tm *__restrict __tp) __THROW;
代码实现
通过time()函数获取时间戳,然后分别通过localtime()和gmtime()函数转换,打印时区 tm_zone信息
#include
#include
using namespace std;int main()
{time_t myt&#61;time(NULL);time_t gmt&#61;time(NULL);struct tm *mytm;struct tm *gmtm;cout<<"myt is:"<tm_year<tm_mon<tm_zone<tm_year<tm_mon<tm_zone<
编译执行如下&#xff1a;
$
$gcc -lstdc&#43;&#43; l_localtime.cpp
$./a.out
myt is:1533018523
gmt is:1533018523
mytm.tm_year is:118
mytm.tm_mon is:6
mytm.tm_zone is:CST
gmtm.tm_year is:118
gmtm.tm_mon is:6
gmtm.tm_zone is:GMT
$
显示结果中 tm_zone 字段 一个是CST&#xff0c;一个是GMT&#xff0c;具体时区的缩写可以网上搜索下。
上面有段注释的代码 //gmtm&#61;gmtime(&gmt); 该行的位置会影响结果的显示&#xff0c;具体的原因目前还不清楚&#xff0c;应该指向STL静态区的指针有关。在网上 找了另一种实现方式&#xff1a;
#include
#include
using namespace std;int main()
{time_t myt&#61;time(NULL);time_t gmt&#61;time(NULL);//struct tm *mytm;//struct tm *gmtm;struct tm mytm;struct tm gmtm;cout<<"myt is:"<}