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

Linux内核中获取时间并转换成本地时区时间 下面的函数get_time_str实现了在内核中获取本地时间的功能。 他首先获取utc时间,然后根据系统的时区timezone转换成本地时间, 最后将时间以“2014-11-02 21:14:08”的字符串的形式输出到output缓冲区中。 函数的返回值,是输出的字符串的长度。 #include #include #include int get_time_str( 阅读详情

一、相关函数介绍

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;
}

输出结果:

time:2023-03-20 20:38:37
Linux获取系统时间的方法 你可以使用date命令来在终端中快速获取系统时间,也可以通过C编程或Python脚本来获取并处理系统时间。date命令是Linux系统中常用的时间工具,它可以用于显示或设置系统的日期和时间。下面将介绍几种常见的获取系统时间的方式,并提供相应的源代码示例。编译并运行上述程序,将输出类似于"Current time: 2023-09-24 10:30:00"的结果。运行上述脚本,将输出类似于"Current time: 2023-09-24 10:30:00"的结果。 阅读详情

相关推荐

Linux编程:time/gettimeofday获取时间

时间戳:指格林威治时间从1970年1月1日(00:00:00 GMT)至当前时间的总秒数。2.通过gettimeofday

风静如云的博客 1万+

Linux时间计算

一、 Linuxtime命令     Linux系统下统计程序运行实践最简单直接的方法就是使用time命令,文献[1, 2]中详细介绍了time命令的用法。此命令的用途在于测量特定指令执行时所需消耗的时间系统资源等资讯,在统计的时间结果中包含以下数据:        (1) 实际时间(real time):从命令行执行到运行终止的消逝时间;        (2) 用户CPU时间(user

Blaider的专栏 5701

Linux C语言时间函数精讲

史上最详细的Linux C语言时间函数讲解!!!

m0_62599305的博客 2320

Linux获取时间函数gettimeofday()

时间linux

neuzhangno的博客 7730

Linux如何查看系统时间的10种方法

本文将为你介绍Linux系统中查看系统时间的10种方法,让你快速掌握这些方法,方便查看系统时间。无论你是初学者还是有一定Linux经验的用户,本文都能帮助你解决问题。阅读本文,你将学会如何在Linux系统中轻松查看系统时间。让我们开始吧!

春枫 2万+

time()时间函数的使用

各种时间函数小介

Walker—fire的博客 1万+

Linux系统获取时间函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代.

gogo0707的博客 3863

Linux C | 时间时间获取、设置、转换 | timegettimeofday、gmtime、localtime、mktime、ctime、asctime、strftime

本文主要介绍Linux系统时间编程相关的几个函数及其使用例子:时间获取、设置、转换 | timegettimeofday、gmtime、localtime、mktime、ctime、asctime、strftime

wkd_007的博客 5245

C语言linux gettimeofday()函数time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间

UNIX及Linux时间系统是由「新纪元时间」Epoch开始计算起,单位为秒。Epoch是指定为1970年1月1日凌晨零点零分零秒,格林威治时间。目前大部份的UNIX系统都是用32位来记录时间,正值表示为1970以后,负值则表示1970年以前。下面看下time.h中的time函数,sys/time.h中的gettimeofday函数 #include<time.h> #include<sys/time.h> #include<stdio.h> int main(){

Dontla的博客 869

Linux下有关时间函数time,times,clock,gettimeofday

因为项目需要,所以把Linux和windows下时间及计时器相关的内容都刷了一遍。终于抽出时间总结一下。 目录 1. 时间的概念 2. 获得时钟时间函数 2.1 时钟时间的存储类型 2.2 time函数 2.3 gettimeofday函数 3. 获得程序运行的时间(即进程时间) 3.1 进程时间的存储类型 3.2 times函数 3.3 clock函数 4. 补充说明 1. 时间的概念 首先理解时钟时间,也叫做墙上时钟时间,可以简单理解为宏观上经过的时间。细究起来就是进程运行的

见牛羊的博客 6654

Linux系统编程--时间函数

2. settimeofday()调用所造成的那种系统时间的突然变化,可能会对依赖于系统时钟单调递增 的应用造成有害的影响。最后两个字段返回的信息是:父进程(比如,times()的调用者)执行了系统调用 wait()的所有 已经终止的子进程使用的 CPU 时间。相形之下,函数 localtime()需要考虑时区和夏令时设置,返回对应于系统本 地时间的一个分解时间。当我们运行一个 shell 程序,我们可以使用的 time(1)命令,同时获得这两个部分的时间值, 以及运行程序所需的实际时间

weixin_42198851的博客 2345

Linux时间函数1-time/ctime获取时间gettimeofday获取微秒时间、clock_gettime获取纳秒时间

Linux时间函数1-time/ctime获取时间gettimeofday获取微秒时间、clock_gettime获取纳秒时间,利用gettimeofday/clock_gettime可以计算程序运行时间

weixin_45925859的博客 1617

12.gettimeofday()time()

gettimeofday() gettimeofday()可于tv指向的缓冲区中返回自Epoch(UTC 1970.1.1 00:00:00)以来的秒数,日期存储于time_t类型的变量,这是SUSv3定义的整数类型) #include <sys/time.h> int gettimeofday(struct timeval *tv, struct timezone*tz); Returns 0 on success, or -1 on error 参数tv是指向如下数据结构的一个指.

随手写下笔记和感悟 833

函数time()gettimeofday()的区别

UNIX及Linux时间系统是由「新纪元时间」Epoch开始计算起,单位为秒。Epoch是指定为1970年1月1日凌晨零点零分零秒,格林威治时间。目前大部份的UNIX系统都是用32位来记录时间,正值表示为1970以后,负值则表示1970年以前。 下面看下time.h中的time函数,sys/time.h中的gettimeofday函数 #include #include

shanzhizi的专栏 5348

linux获得系统时间 c,linux c 获取系统时间

#include main(){time_t timep;time (&timep);printf(“%s”,asctime(gmtime(&timep)));}#includemain(){time_t timep;time (&timep);printf(“%s”,ctime(&timep));}#include#includemain(){struct tim...

weixin_39599372的博客 385

Linux时间获取

系统时间获取总的来说可以分为这三步获取秒数格式化输出打印时间

qq_61802519的博客 1175

linux下使用gettimeofday函数获取程序执行时间

一.介绍 linux下为了获取某个程序的执行时间,我们通常使用gettimeofday()函数,此函数声明在sys/time.h文件中,此函数接收两个结构体变量地址,分别为timeval、timezone。 两个结构体声明如下: struct timeval { time_t tv_sec; //秒 long tv_usec; //微秒 }; struct timezon...

Tiamo的博客 1856

visual studio 中C/C++获取计时方法 &Linux获取系统时间方法

有很多方法可以用来获取时间,或者用来计算时间。但是还是下面这个最简单: #include"stdafx.h" 

beglorious的专栏 3171
上一篇: Linux之进程间通信④——共享内存(Shared Memory)
下一篇: STM32学习:①流水灯
夹心狗勾
博客等级 码龄6年 4粉丝 8原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值