Linux之获取系统时间(time函数、gettimeofday函数)

这篇具有很好参考价值的文章主要介绍了Linux之获取系统时间(time函数、gettimeofday函数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、相关函数介绍

1.1 ctime()函数

#include <time.h>
char *ctime(const time_t *timer)

①函数功能:将日历时间参数time转换为一个表示本地当前时间的字符串;
②函数参数:timer为time()函数获得
③函数返回值:返回字符串格式(星期 月 日 小时:分:秒 年);

1.2 localtime()函数

struct tm *localtime(const time_t *timer);

tm结构:

struct tm{
	int tm_sec;
	int tm_min;
	int tm_hour;
	int tm_mday;
	int tm_mon;
	int tm_year;
	int tm_wday;
	int tm_yday;
	int tm_isdst;
};

①函数功能:使用timer的值填充tm结构体,其值会被分解为tm结构,并用本地时区表示;
②函数参数:timer为time()函数获得;
③函数返回值:以tm结构表达的时间;

1.3 strftime()函数

#include <time.h>
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

①函数功能:年-月-日 小时:分钟:秒 格式的日期字符串转换成其它形式的字符串;
②函数参数
第一个参数→str为指向目标数组的指针,用来复制产生的C字符串;
第二个参数→maxsize为被复制到str的最大字符数;
第三个参数→format为C字符串,包含了普通字符和特殊格式说明符的任何组合。这些格式说明符由函数替换为表示 tm 中所指定时间的相对应值;
第四个参数→timeptr指向 tm 结构的指针,tm结构体详情可见ctime()函数;
③函数返回值:如果产生的 C 字符串小于 maxsize 个字符(包括空结束字符),则会返回复制到 str 中的字符总数(不包括空结束字符),否则返回零。

二、获取系统时间方法

2.1.1 time()函数

#include <time.h>
time_t time(time_t *timer);

time_t 是一个unsigned long类型,
①函数功能:得到当前日历时间或设置日历时间
②函数参数
timer = NULL时,为得到当前日历时间(从1970-01-01 00:00:00到现在的秒数);
timer = 时间数值时,用于设置日历时间,其返回值存储在timer中;
③函数返回值:返回当前日历时间

2.1.2 time()案例

输出时间格式:Mon Mar 20 15 : 51 : 31 2023

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <sys/time.h>

int printf_time(void);
int main(int argc,char **argv)
{
	printf_time();//调用获取时间函数
	return 0;
}

int printf_time(void)
{
	time_t timep;//time_t 是一个适合存储日历时间类型
	time(&timep);
	char *s = ctime(&timep);//ctime()把日期和时间转换为字符串
	printf("date:%s",s);
	return 0;
}

输出结果:

date:Mon Mar 20 15:51:31 2023

2.2.1 gettimeofday()函数

#include <unistd.h>
#include <sys/time.h>
int gettimeofday(struct timeval *tv,struct timezone *tz);

timeval结构体:
struct timeval{
    long  tv_sec; // 秒数
    long  tv_usec; // 微秒数
};

timezone结构体:
struct timezone{
    int tz_minuteswest;//格林威治时间往西方的时差
    int tz_dsttime;//DST 时间的修正方式
}

①函数功能:把目前的时间由tv所指向的结构体返回,当地时区的信息则放到tz所指的结构中;
②函数参数
第一个参数→tv为timeval结构体;
第二个参数→tz为timezone结构体;
③函数返回值:在gettimeofday()函数中的俩个参数都可以为NULL,为NULL时对应的结构体将不返回值。成功,返回0;失败,返回-1,原因存在errno中;

2.2.2 gettimeofday()案例

输出时间格式:2023-03-20 20:38:37

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <sys/time.h>

int get_time(char *buff,int len);
int main(int argc, const char **argv)
{
    char buff[40];
    get_time(buff, sizeof(buff));
    printf("time:%s\n", buff);
    return 0;
}

int get_time(char *buff,int len)
{
	struct timeval tv;
    struct tm* ptm;
    char time_string[40];
    
    gettimeofday(&tv, NULL);
    ptm = localtime (&(tv.tv_sec));
    strftime (time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm);  //输出格式为: 2022-03-30 20:38:37
    snprintf (buff, len, "%s", time_string);            
    return 0;
}

输出结果:文章来源地址https://www.toymoban.com/news/detail-461271.html

time:2023-03-20 20:38:37

到了这里,关于Linux之获取系统时间(time函数、gettimeofday函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 硬件时间(RTC time)、系统时间(UTC时间、Universal time)、本地时间(Local time)、时区(Time zone)与夏令时(DST)解析

    处理和管理时间是计算机科学的重要方面,但也是最复杂和容易混淆的方面之一。本文将详细介绍硬件时间、系统时间(UTC时间)、本地时间、时区和夏令时,希望能帮助读者更好地理解这些概念。 1.1 硬件时间简介 硬件时间,也被称为实时时钟(RTC),是指计算机主板上的

    2024年02月04日
    浏览(30)
  • Go语言time库,时间和日期相关的操作方法

    用于处理时间、日期和时区的核心库。在实际开发中,常常需要与时间打交道,例如记录日志、处理时间差、计算时间间隔等等。因此,掌握time库的使用方法对于Go开发者来说非常重要。 在Go语言中,时间表示为time.Time类型,日期表示为time.Time类型或者time.Date类型,时区表示

    2024年02月14日
    浏览(36)
  • python time 获取毫秒级时间戳

    1、time 获取秒级时间戳,格式化显示 结果: 2、datetime 获取当前日期时间 结果: 3、日期时间之间的转换 3.1、字符串转 time 3.2、字符串转 time 3.3、示例

    2024年02月16日
    浏览(40)
  • Python time模块时间获取和转换

    格林威治时间(GMT)1970年01月01日00时00分00秒起至现在的总秒数 %Y Year with century as a decimal number.(年) %m Month as a decimal number [01,12].(月) %d Day of the month as a decimal number [01,31].(日) %H Hour (24-hour clock) as a decimal number [00,23].(时-24时) %M Minute as a decimal number [00,59].(分) %S Second as a decimal numbe

    2024年02月02日
    浏览(39)
  • 一行命令查看Linux系统重启时间和相关记录

    一行命令查看Linux系统重启时间和相关记录。 系统启动时间并转换为秒: 当前时间并转换为秒: 使用当前时间减去启动时间,可以得到系统的运行时间。 举例:假如系统重启后,10分钟内,判断为系统重启,否则判断为运行状态。很多服务和应用可以根据系统重启后,进行

    2024年02月04日
    浏览(34)
  • STM 如何通过网络 time.windows.com获取时间

    在STM32中,你可以使用STM32Cube HAL库提供的网络套接字API来通过网络获取时间。以下是一个示例代码,演示如何通过time.windows.com获取时间:

    2024年02月14日
    浏览(31)
  • php时间函数date()、getdate()、time()

    目录   1. 时区修改 2. date() 3. getdate() 4. time()  位于东八区,修改php.ini 。date.timezone = Asia/Shanghai 获取时间函数 得到当前时间的一个数组, 这个数组包含了时间戳所代表的各种时间单位的值。具体来说,这些元素代表了以下内容: - seconds(秒):33 - minutes(分钟):50 - hour

    2024年02月02日
    浏览(42)
  • RTC time和Local time区别以及Linux 设置时区和修改时间

    以上修改的是系统时间,由操作系统控制。 还有一个硬件时间。使用hwclock --systohc可以将系统时间同步到硬件时间。 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Co

    2024年02月12日
    浏览(32)
  • Linux系统调用之fork,getpid,getppid函数(进程相关函数,与G老师的对话,必看!)

    如果,想要深入的学习Linux系统调用中的fork,getpid,getppid函数,还是需要去自己阅读Linux系统中的帮助文档。 具体输入命令: man 2 fork/getpid/getppid 即可查阅到完整的资料信息。 fork() 函数是 UNIX/Linux 系统中的一个系统调用 (system call),它会创建一个新的进程,称为子进程,该

    2024年02月08日
    浏览(37)
  • linux ls命令 --time-style选项 日期时间格式控制

    语法格式: s -l --time-style=xxx命令可以显示时间的格式,xxx:full-iso, long-iso, iso, locale, +FORMAT, ls -l --time-style=full-iso 显示全部时间,包括毫秒在内如: drwxr-xr-x 2 boco boco 4096 2013-10-16 14:49:57.000000000 +0800 Deskt ls -l --time-style=long-iso 显示日期和时间(包括年),以长格式显示yyyy-mm-dd

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包