C语言时间处理基础

先看综合案例,再逐个解释。

#include <stdio.h>
#include <time.h>
int main()
{
    // 获取当前时间戳
    time_t currentTime = time(NULL);
    printf("Current timestamp: %ld\n", currentTime); // 这里 %ld 是用于打印 long 类型的格式控制符。 %ld 表示按照长整型打印,适用于 time_t 类型。

    // 转换为本地时间结构体
    struct tm *localTimeInfo = localtime(&currentTime);
    printf("Year: %d\n", localTimeInfo->tm_year + 1900); // tm_year 表示自 1900 年起的年数
    printf("Month: %d\n", localTimeInfo->tm_mon + 1);    // tm_mon 表示月份(0 到 11)
    printf("Day: %d\n", localTimeInfo->tm_mday);         // tm_mday 表示月中的天数
    printf("Hour: %d\n", localTimeInfo->tm_hour);        // tm_hour 表示小时
    printf("Minute: %d\n", localTimeInfo->tm_min);       // tm_min 表示分钟
    printf("Second: %d\n", localTimeInfo->tm_sec);       // tm_sec 表示秒

    // 本地时间结构体转换成时间戳
    time_t timestamp = mktime(localTimeInfo);
    printf("Timestamp: %ld\n", timestamp);
    
    // 定义一个字符串来存储格式化后的时间,根据你的格式要求调整大小
    char formattedTime[20];
    // 使用 strftime 进行格式化
    strftime(formattedTime, sizeof(formattedTime), "%Y-%m-%d %H:%M:%S", localTimeInfo);
    printf("Formatted Time: %s\n", formattedTime);


    return 0;
}

time 函数

time函数是C语言标准库 <time.h> 中提供的函数之一,用于获取当前的系统时间。它的原型通常为:

time_t time(time_t *timer);
  • timer:指向一个 time_t 类型对象的指针,用于存储从公元1970年1月1日00:00:00 UTC(协调世界时)开始计算的秒数。如果传递 NULL,则该函数不会返回秒数,而是直接返回当前时间的值。

time函数返回一个 time_t 类型的值,表示从公元1970年1月1日00:00:00 UTC开始计算的秒数,即所谓的“Unix时间戳”或“Epoch时间”。

time_t currentTime;
time_t currentTime1 = time(&currentTime);// 现在currentTime和返回值是一样的,返回值可以不写
time_t currentTime2 = time(NULL);// 参数为NULL时,返回当前时间戳。省略了中间变量,更为直接和简洁。
printf("%ld\n", currentTime); 
printf("%ld\n", currentTime1); 
printf("%ld\n", currentTime2); 

localtime 函数

localtime 函数用于将表示时间的 time_t 类型值转换为本地时间的结构体 struct tm。其函数声明如下:

struct tm *localtime(const time_t *timer);
  • timer:指向 time_t 类型的指针,用于传递时间值。

函数返回一个指向 struct tm 结构体的指针,该结构体包含了本地时间的详细信息,如年、月、日、时、分、秒等。

mktime 函数

mktime 是一个 C 标准库中的函数,用于将结构体 struct tm 表示的时间转换为日历时间(即秒数)。

time_t mktime(struct tm *timeptr);

该函数接受一个指向 struct tm 结构体的指针,结构体包含了年、月、日、时、分、秒等时间信息。mktime 将这些时间信息转换为从 1970 年 1 月 1 日开始计算的秒数。

strftime 函数

strftime 是 C 语言中用于将时间格式化为字符串的函数。其基本用法如下:

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);
  • str: 用于存储格式化后时间的字符串的指针。
  • maxsize: str 的最大大小,以防止缓冲区溢出。
  • format: 格式字符串,指定输出的时间格式。
  • timeptr: 包含时间信息的 struct tm 结构体指针。

下面是一些常用的时间格式说明符:

  • %Y: 年份,包括世纪部分(4 位数字)。
  • %m: 月份(两位数字,01-12)。
  • %d: 月份中的天数(两位数字,01-31)。
  • %H: 小时(24 小时制,两位数字,00-23)。
  • %M: 分钟(两位数字,00-59)。
  • %S: 秒数(两位数字,00-59)。

strptime 函数

作用:将字符串解析为时间戳

注意:strptime 函数是 POSIX 标准中定义的,在 Windows 上不是标准 C 库的一部分。

我本机是windows系统,无法验证,以后有机会另开篇幅,自定义一个函数或用第3方库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值