localtime使用

结构分析

time

返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位

localtime

struct tm *localtime(const time_t *timer)

返回tm结构体,如下

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 到 11 */
   int tm_year;        /* 自 1900 起的年数 */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6 */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365 */
   int tm_isdst;       /* 夏令时 */
};

从上面可以看到年要加上1900,月要加上1。

示例代码

static int get_today(struct date *today)
{
	time_t t;
	struct tm * lt;

	time(&t);			// 获取Unix时间戳
	lt = localtime(&t);	// 转为时间结构

	today->year = lt->tm_year+1900;
	today->month = lt->tm_mon+1;
	today->day = lt->tm_mday;
	// printf("%d/%d/%d %d:%d:%d\n", lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec);

	return 0;
}
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`localtime_s` 是 C 语言标准库中的一个函数,用于将时间表示的秒数转换为本地时间。它属于 `time.h` 头文件中定义的一系列时间处理函数。与 `localtime` 函数相比,`localtime_s` 是更安全的版本,因为它需要额外的参数来指定目标数组的大小,以防止缓冲区溢出。 函数原型如下: ```c struct tm *localtime_s(const time_t * restrict timer, struct tm * restrict result); ``` - `timer`:指向要转换时间的 `time_t` 类型的指针。 - `result`:指向 `struct tm` 类型的缓冲区,用于存放转换后的本地时间信息。 `localtime_s` 函数会将 `timer` 指向的时间(一般是从 `time` 函数获取的)转换为本地时间,并以 `struct tm` 格式存储在 `result` 指向的缓冲区中。如果转换成功,它返回指向 `result` 的指针;如果失败,返回 `NULL`。 使用时需要注意的是,调用者必须确保 `result` 指向的缓冲区足够大,以存储转换后的 `struct tm` 结构体。通常情况下,至少要有 `sizeof(struct tm)` 大小的缓冲区。 示例代码: ```c #include <stdio.h> #include <time.h> int main() { time_t currentTime; struct tm localTime; // 获取当前时间 time(&currentTime); // 转换为本地时间 if (localtime_s(&currentTime, &localTime) == NULL) { printf("转换失败\n"); } else { // 输出转换后的本地时间 printf("本地时间是: %02d:%02d:%02d\n", localTime.tm_hour, localTime.tm_min, localTime.tm_sec); } return 0; } ``` 在上述代码中,我们首先获取当前时间,然后使用 `localtime_s` 将其转换为本地时间,并打印出小时、分钟和秒。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值