localtime

发布时间:2024-08-19 08:36:53 来源:君肯网

perl下time函数会返回一个十位的时间戳,精确到秒,看起来像这个样子(1180630098)。这个数字是从1900年到当前时间的秒数。但你并看不出是什么意思。所以需要转换形式,转换成‘Thu May 31 09:48:18 2007’这样的字符串。Perl可以在标量上下文中使用localtime函数完成这种转换。

在列表下文中,localtime会返回一个数字元素组成的列表:

列表中各元素的含义如下:

注:默认情况(不传参时)下使用time函数的返回值作为参数:

gtime函数与localtime函数一样,但返回的值为本地化的格林尼治标准时区(GMT)时间。

默认情况(不传参时)下使用time函数的返回值作为参数:

注意:在列表上下文中调用时,$ isdst,gmtime返回的最后一个值始终是0 。GMT没有夏令时。

C++的time和localtime的函数 怎么用?

1、localtime是把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间,而gmtime函数转换后的时间没有经过时区变换,是UTC时间。2、说明:此函数获得的tm结构体的时间是日历时间。3、用法:structtm*localtime(consttime_t*clock)4、返回值:返回指向tm结构体的指针.tm结构体是time.h中定义的用于分别存储时间的各个量(年月日等)的结构体.5、范例

为什么localtime函数返回的指针不需要释放

1.

time

函数

返回1970-1-1,

00:00:00以来经过的秒数

原型:

time_t

time(time_t

*calptr)

结果可以通过返回值,也可以通过参数得到,见实例

头文件

&lttime.h&gt

返回值:

成功:秒数,从1970-1-1,00:00:00

可以当成整型输出或用于其它函数

失败:-1

例:

time_t

now

time(&ampnow)//

等同于now

=

time(NULL)

printf(”now

time

is

%d\n”,

now)

2.

localtime函数

将时间数值变换成本地时间,考虑到本地时区和夏令时标志

原型:

struct

tm

*localtime(const

time_t

*

calptr)

头文件

&lttime.h&gt

 返回值:

成功:

struct

tm

*结构体,

原型如下:

struct

tm

{

int

tm_sec

/*

取值区间为[0,59]

*/

int

tm_min

/*

取值区间为[0,59]

*/

int

tm_hour

/*

localtime

取值区间为[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日

*/

int

tm_isdst

/*

夏令时标识符,夏令时tm_isdst为正;不实行夏令时tm_isdst为0

*/

}

此结构体空间由内核自动分配,

而且不要去释放它.

失败:

NULL

例:

time_t

now

struct

tm

*tm_now

time(&ampnow)

tm_now

=

localtime(&ampnow)

printf(”now

datetime:

%d-%d-%d

%d:%d:%d\n”,

tm_now-&gttm_year+1900,

tm_now-&gttm_mon+1,

tm_now-&gttm_mday,

tm_now-&gttm_hour,

tm_now-&gttm_min,

tm_now-&gttm_sec)

以上只在linux环境下通过,

C/C++通用,

WINDOWS不清楚是否不同。这两个是标准C的函数,应该不会相差太大。

为什么localtime线程不安全

localtime返回的结果,其实指向的是一个静态变量,全局共享,不需要释放。

这样的例子有很多,比如strerror之类的函数,返回错误字符串也不需要释放,也是一样机制。

从localtime函数的原型定义分析

struct tm *localtime(const time_t *timep)

localtime函数返回了一个struct tm指针,函数的说明中并未要求调用者将该指针free掉,证明tm对象并非是malloc或new出来的。那么tm一定是个全局变量或者是localtime函数中的局部静态变量。

这样的变量在多线程访问时会出问题,第一个线程在localtime返回之前首先改变了这个变量的值,第二个线程又进来改变这个变量,以此类推。这样第一个线程在真正返回时该值已经被多次改变,这是典型的函数重入问题。

因此localtime函数线程不安全。

以上就是关于localtime 与 gtime 函数全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

perl下time函数会返回一个十位的时间戳,精确到秒,看起来像这个样子(1180630098)。这个数字是从1900年到当前时间的秒数。但…
查看详情
perl下time函数会返回一个十位的时间戳,精确到秒,看起来像这个样子(1180630098)。这个数字是从1900年到当前时间的秒数。但…
查看详情
perl下time函数会返回一个十位的时间戳,精确到秒,看起来像这个样子(1180630098)。这个数字是从1900年到当前时间的秒数。但…
查看详情
相关文章
推荐游戏
风之谷
风之谷
游戏资讯 10.5M
下载
斗罗大陆3
斗罗大陆3
游戏资讯 566.9M
下载
冠军网球
冠军网球
游戏资讯 148.1M
下载
最佳炮手
最佳炮手
游戏资讯 68.1M
下载
如梦下弦月
如梦下弦月
游戏资讯 840.1M
下载
富甲封神传
富甲封神传
游戏资讯 263.0M
下载