linux 时间转换

Linux 的 localtime(),gmtime() 与时区 阅读详情

linux下的时间函数

我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。

linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。

time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点,可以用结构struct timeval,它精确到微妙。

struct   timeval
{
   
long   tv_sec ;  /*秒*/
   
long   tv_usec ;  /*微秒*/
} ;

而直接存储年月日的是一个结构:

struct   tm
{
   
int   tm_sec ;  /*秒,正常范围0-59, 但允许至61*/
   
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 ;  /*从今年1月1日到目前的天数,范围0-365*/
   
int   tm_isdst ;  /*日光节约时间的旗标*/
} ;

需要特别注意的是,年份是从1900年起至今多少年,而不是直接存储如2008年,月份从0开始的,0表示一月,星期也是从0开始的, 0表示星期日,1表示星期一。

下面介绍一下我们常用的时间函数:

#include  < time.h >
char  * asctime ( const   struct   tm *  timeptr ) ;
将结构中的信息转换为真实世界的时间,以字符串的形式显示
char  * ctime ( const   time_t  * timep ) ;
将
timep 转换为真是世界的时间,以字符串显示,它和 asctime 不同就在于传入的参数形式不一样
double   difftime ( time_t   time1 ,  time_t   time2 ) ;
返回两个时间相差的秒数
int   gettimeofday ( struct   timeval  * tv ,  struct   timezone  * tz ) ;
返回当前距离
1970 年的秒数和微妙数,后面的 tz 是时区,一般不用
struct   tm *  gmtime ( const   time_t  * timep ) ;
将
time_t 表示的时间转换为没有经过时区转换的 UTC 时间,是一个 struct   tm 结构指针
stuct   tm *  localtime ( const   time_t  * timep ) ;
和
gmtime 类似,但是它是经过时区转换的时间。
time_t   mktime ( struct   tm *  timeptr ) ;
将
struct   tm  结构的时间转换为从 1970 年至今的秒数
time_t   time ( time_t  * t ) ; 
取得从
1970 年 1 月 1 日至今的秒数。

上面是简单的介绍,下面通过实战来看看这些函数的用法:

下载:  gettime1.c
  1. /*gettime1.c*/
  2. #include <time.h>
  3. int main()
  4. {
  5. time_t timep;
  6. time(&timep); /*获取time_t类型的当前时间*/
  7. /*用gmtime将time_t类型的时间转换为struct tm类型的时间按,
  8. 然后再用asctime转换为我们常见的格式 Fri Jan 11 17:25:24 2008
  9. */
  10. printf("%s", asctime(gmtime(&timep)));
  11. return 0;
  12. }

编译并运行:

$gcc -o gettime1 gettime1.c
$./gettime1
Fri Jan 11 17:04:08 2008

下面是直接把time_t类型的转换为我们常见的格式:

下载:  gettime2.c
  1. /* gettime2.c*/
  2. #include <time.h>
  3. int main()
  4. {
  5. time_t timep;
  6. time(&timep); /*获取time_t类型当前时间*/
  7. /*转换为常见的字符串:Fri Jan 11 17:04:08 2008*/
  8. printf("%s", ctime(&timep));
  9. return 0;
  10. }

编译并运行:

$gcc -o gettime2 gettime2.c
$./gettime2
Sat Jan 12 01:25:29 2008

我看了一本书上面说的这两个例子如果先后执行的话,两个的结果除了秒上有差别之外(执行程序需要时间),应该是一样的,可是我这里执行却发现差了很长时间按,一个是周五,一个是周六,后来我用 date 命令执行了一遍

$date
六 1月 12 01:25:19 CST 2008

我发现date和gettime2比较一致, 我估计可能gettime1并没有经过时区的转换,它们是有差别的。

下载:  gettime3.c
  1. /*gettime3.c */
  2. #include <time.h>
  3. int main()
  4. {
  5. char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
  6. time_t timep;
  7. struct tm *p;
  8. time(&timep); /*获得time_t结构的时间,UTC时间*/
  9. p = gmtime(&timep); /*转换为struct tm结构的UTC时间*/
  10. printf("%d/%d/%d ", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);
  11. printf("%s %d:%d:%d/n", wday[p->tm_wday], p->tm_hour,
  12. p->tm_min, p->tm_sec);
  13. return 0;
  14. }

编译并运行:

$gcc -o gettime3 gettime3.c
$./gettime3
2008/1/11 Fri 17:42:54

从这个时间结果上来看,它和gettime1保持一致。

下载:  gettime4.c
  1. /*gettime4.c*/
  2. #include <time.h>
  3. int main()
  4. {
  5. char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
  6. time_t timep;
  7. struct tm *p;
  8. time(&timep); /*获得time_t结构的时间,UTC时间*/
  9. p = localtime(&timep); /*转换为struct tm结构的当地时间*/
  10. printf("%d/%d/%d ", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);
  11. printf("%s %d:%d:%d/n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);
  12. return 0;
  13. }

编译并运行:

$gcc -o gettime4 gettime4.c
$./gettime4
2008/1/12 Sat 1:49:29

从上面的结果我们可以这样说:
time, gmtime, asctime 所表示的时间都是UTC时间,只是数据类型不一样,而
localtime, ctime 所表示的时间都是经过时区转换后的时间,它和你用系统命令date所表示的CST时间应该保持一致。

下载:  gettime5.c
  1. /*gettime5.c*/
  2. #include <time.h>
  3. int main()
  4. {
  5. time_t timep;
  6. struct tm *p;
  7. time(&timep); /*当前time_t类型UTC时间*/
  8. printf("time():%d/n",timep);
  9. p = localtime(&timep); /*转换为本地的tm结构的时间按*/
  10. timep = mktime(p); /*重新转换为time_t类型的UTC时间,这里有一个时区的转换*/
  11. printf("time()->localtime()->mktime(): %d/n", timep);
  12. return 0;
  13. }

编译并运行:

$gcc -o gettime5 gettime5.c
$./gettime5
time():1200074913
time()->localtime()->mktime(): 1200074913

这里面把UTC时间按转换为本地时间,然后再把本地时间转换为UTC时间,它们转换的结果保持一致。

下载:  gettime6.c
  1. /*gettime6.c */
  2. #include <time.h>
  3. int main()
  4. {
  5. time_t timep;
  6. struct tm *p;
  7. time(&timep); /*得到time_t类型的UTC时间*/
  8. printf("time():%d/n",timep);
  9. p = gmtime(&timep); /*得到tm结构的UTC时间*/
  10. timep = mktime(p); /*转换,这里会有时区的转换*/
  11. printf("time()->gmtime()->mktime(): %d/n", timep);
  12. return 0;
  13. }

编译并运行:

$gcc -o gettime6 gettime6.c
$./gettime6
time():1200075192
time()->gmtime()->mktime(): 1200046392

从这里面我们可以看出,转换后时间不一致了,计算一下,整整差了8个小时( (1200075192-1200046392)/3600 = 8 ),说明mktime会把本地时间转换为UTC时间,这里面本来就是UTC时间,于是再弄个时区转换,结果差了8个小时,用的时候应该注意。


函数分类:
1. 设置时间: settimeofday, tzset
2. 获取时间: time, ftime, gettimeofday
3. 时间格式转换: mktime, strftime; gmtime, localtime; asctime, ctime
4. 其他: clock, difftime

asctime: 将时间和日期以字符串格式表示
头文件: time.h
函数定义: char *asctime(const struct tm *timeptr);
说明: asctime()将函数timeptr所指的tm结构中的信息转换成现实世界所使用的时间日期表示方法, 然后将结果以字符串形态返回. 此函数已经由时区转换成当地时间, 返回的字符串格式为: "Wed Jun 30 21:49:08 1993/n"
ctime: 将时间和日期以字符串格式表示
头文件: time.h
函数定义: char *ctime(const time_t *timep);
说明: ctime()同asctime()函数, 只是输入参数为time_t.
应用举例:
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t timep;
time(&timep);
printf("%s", ctime(&timep));
printf("%s", asctime(gmtime(&timep)));
return 0;
}
运行结果:
Sun Dec 14 15:30:11 2008
Sun Dec 14 15:30:11 2008

clock: 取得进程占用CPU的大约时间
头文件: time.h
函数定义: clock_t clock(void);
说明: clock()用来返回进程所占用CPU的大约时间.

difftime: 计算时间差距
头文件: time.h
函数定义: double difftime(time_t time1, time_t time0);
说明: difftime()用来计算参数time1-time0, 结果以double型精确值返回. 两个参数的时间都是以1970年1月1日0时0分0秒算起的UTC时间.

ftime: 取得目前的时间和日期
头文件: sys/timeb.h
函数定义: int ftime(struct timeb *tp);
说明: ftime()将日前时间日期由参数tp所指的结构输出. tp结构定义如下:
struct timeb{
/* 为从1970年1月1日至今的秒数 */ 
time_t time;
/* 为千分之一秒 */
unsigned short millitm;
/* 为目前时区和Greenwich相差的时间, 单位为单位 */
short timezone;
/* 为日光节约时间的修正状态, 若非0为启用日光节约时间的修正 */ 
short dstflag; 
};
无论成功还是失败都返回0. 
应用举例:
#include <stdio.h>
#include <sys/timeb.h>
int main(void)
{
struct timeb tp;
ftime(&tp);
printf("time: %d/n", tp.time);
printf("millitm: %d/n", tp.millitm);
printf("timezone: %d/n", tp.timezone);
printf("dstflag: %d/n", tp.dstflag);
return 0;
}
运行结果:
time: 1229271908
millitm: 716
timezone: -480
dstflag: 0

gettimeofday: 取得目前的时间
头文件: sys/time.h unist.d
函数定义: int gettimeofday(struct timeval *tv, struct timezone *tz);
说明: gettimeofday()会把目前的时间用tv所指的结构返回, 当地时区的信息则放到tz所指的结构中. 成功则返回0, 失败返回-1, 错误代码存于errno. EFAULT是指针tv和tz所指的内存空间超出存取权限.
timeval结构定义为:
struct timeval{
/* 为从1970年1月1日至今的秒数 */
long tv_sec;
/* 微秒 */ 
long tv_usec;
};
timezone 结构定义为:
struct timezone{
/* 和Greenwich时间差了多少分钟 */ 
int tz_minuteswest;    
/*日光节约时间的状态*/
int tz_dsttime;
};
上述两个结构都定义在/usr/include/sys/time.h, tz_dsttime所代表的状态如下:
   DST_NONE     /*不使用*/
   DST_USA      /*美国*/
   DST_AUST     /*澳洲*/
   DST_WET      /*西欧*/
   DST_MET      /*中欧*/
   DST_EET      /*东欧*/
   DST_CAN      /*加拿大*/
   DST_GB       /*大不列颠*/
   DST_RUM      /*罗马尼亚*/
   DST_TUR      /*土耳其*/
   DST_AUSTALT /*澳洲(1986年以后)*/

gmtime: 将秒数转换目前的时间和日期
头文件: time.h
函数定义: struct tm *gmtime(const time_t *timep);
说明: gmtime()将参数timep所指的time_t结构中的信息转换成现实世界所使用的时间日期表示方法, 然后将结果由结构tm返回. 结构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;
};
   int tm_sec   代表目前秒数, 正常范围为0-59, 但允许至61秒
   int tm_min   代表目前分数, 范围0-59
   int tm_hour 从午夜算起的时数, 范围为0-23
   int tm_mday 目前月份的日数, 范围01-31
   int tm_mon   代表目前月份, 从一月算起, 范围从0-11
   int tm_year   从1900年算起至今的年数
   int tm_wday   一星期的日数, 从星期一算起, 范围为0-6
   int tm_yday   从今年1月1日算起至今的天数, 范围为0-365
   int tm_isdst 日光节约时间的旗标
此函数返回的时间日期未经时区转换, 是UTC时间.

localtime: 将秒数转换当地目前的时间和日期
头文件: time.h
函数定义: struct *localtime(const time_t *timep);
说明: localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法, 然后将结果由结构tm返回. 结构tm的定义请参考gmtime(). 此函数返回的时间日期已经转换成当地时区.

mktime: 将时间结构数据转换成经过的秒数
头文件: time.h
函数定义: time_t mktime(struct tm *timeptr);
说明: mktime()用来将参数timeptr所指的tm结构数据转换成从1970年1月1日0时0分0秒算起至今的UTC时间所经过的秒数. 返回经过的秒数.

settimeofday: 设置目前的时间
头文件: sys/time.h unistd.h
函数定义: settimeofday()会把目前时间设成由tv所指的结构信息, 当地时区信息则设成tz所指的结构. 详细的说明请参考gettimeofday(). 注意, 只有root权限才能使用此函数修改时间. 成功则返回0, 失败返回-1, 错误代码存于errno. 
错误代码:
   EPERM   并非由root权限调用settimeofday(), 权限不够 
   EINVAL 时区或某个数据是不正确的, 无法正确设置时间

strftime: 格式化日期和时间
头文件: time.h
函数定义: size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
说明: strftime()会将参数tm的时间结构, 参照参数format所指定的字符串格式做转换, 转换后的字符串内容将复制到参数s所指的字符串数组中, 该字符串的最大长度为参数max所控制. 下面是参数format的格式指令:
   %a 当地星期日期的名称缩写, 如: Sun
   %A 当地星期日期的名称缩写, 如: Sunday
   %b 当地月份的缩写
   %B 当地月份的完整名称
   %c 当地适当的日期与时间表示法
   %C 以year/100表示年份
   %d 月里的天数, 表示法为01-31
   %D 相当于"%m%d%y"格式
   %e 月里的天数, 表示法为1-31
   %h 当地月份的缩写
   %H 以24小时制表示小时数, 表示法为00-23
   %I 以12小时制表示小时数, 表示法为01-12
   %j 一年中的天数(001-366)
   %k 以24小时制表示小时数, 表示法为0-23
   %l 以12小时制表示小时数, 表示法为1-12
   %m 月份(01-12)
   %M 分钟数(00-59)
   %n 同/n
   %p 显示对应的AM或PM
   %P 显示对应的am或pm
   %r 相当于使用"%I:%M:%S %p"格式 
   %R 相当于使用"%H:%M"格式
   %s 从1970年1月1日0时0分0秒算起至今的UTC时间所经过的秒数
   %S 秒数(00-59)
   %t 同/t
   %T 24小时时间表示, 相当于"%H:%M:%S"格式
   %u 一星期中的星期日期, 范围1-7, 星期一从1开始
   %U 一年中的星期数(00-53), 一月第一个星期日开始为01
   %w 一星期中的星期日期, 范围0-6, 星期日从0开始
   %W 一年中的星期数(00-53), 一月第一个星期一开始为01
   %x 当地适当的日期表示
   %X 当地适当的时间表示
   %y 一世纪中的年份表示
   %Y 完整的公元年份表示
   %Z 使用的时区名称
   %% '%'符号
返回复制到参数s所指的字符串数组的总字符数, 不包括字符串结束符. 如果返回0, 表示未复制字符串到参数s内, 但不表示一定有错误发生. 
附加说明: 环境变量TZ和TC_TIME会影响此函数结果.
应用举例:
#include <stdio.h>
#include <time.h>
int main(void)
{
char *format[] = {"%I: %M: %S %p %m/%d %a", "%x %X %Y", NULL};
char buf[30];
int i;
time_t clock;
struct tm *tm;
time(&clock);
tm = localtime(&clock);
for(i = 0; format[i] != NULL; i++)
{
   strftime(buf, sizeof(buf), format[i], tm);
   printf("%s => %s/n", format[i], buf);
}
return 0;
}
运行结果:
%I: %M: %S %p %m/%d %a => 01: 46: 44 AM 12/15 Mon
%x %X %Y => 12/15/08 01:46:44 2008

time: 取得目前的时间
头文件: time.h
函数定义: time_t time(time_t *t);
说明: time()会返回从1970年1月1日从0时0分0秒算起的UTC时间到现在所经过的秒数. 如果t并非空指针的话, 此函数也会将返回值存到t指针所指的内存. 成功则返回秒数, 失败则返回(time_t-1)值, 错误原因存于errno中.

tzset: 设置时区以供时间转换
头文件: time.h
函数定义: void tzset(void); extern char *tzname[2];
说明: tzset()用来将环境变量TZ设给全局变量tzname, 也就是从环境变量取得目前当地的时区. 时间转换函数会自动调用此函数. 若TZ为设置, tzname会依照/etc/localtime找出最接近当地的时区. 若TZ为NULL, 或是无法判认, 则使用UTC时区. 此函数总是成功, 并且初始化tzname.

Linux下时间格式转换 一、linux下时间表示方式 linux下存储时间常见的有两种存储方式: 1.从1970年到现在经过了多少秒 (time_t类型) 2.用一个结构来分别存储年月日时分秒 (tm结构体) tm结构体如下: struct tm { int tm_sec; /*秒,正常范围0-59, 但允许至61*/ int tm_min; /*分钟,0-59*/ int 阅读详情

相关推荐

摄像头读取出现VIDIOC_STREAMON: No space left on device 错误

先说下原因,linux中为usb camera提供了一个标准的V4L2的驱动以方便使用,只要符合驱动规范就可以实现即插即用usb camera设备,即免驱动安装。 但市面上的USB 摄像头都是2.0的。usb bus的 bandwidth是有限的,而V4L2驱动采用的是贪心原则,即camera会要求获取最大带宽;因此将两个camera接入一路usb bus,打开第二个camera(尤其是采用YUV...

houge101的博客 9288

timeval 转换为年月日

#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <time.h> char time_string[40]; char *getLocalTime(char *timeStr, int len, struct timeval tv ) { struct tm *ptm; // char time_string[40]; long millisecon...

珂珂可爱多 2654

CANoe进阶实战(第十一章)-LIN节点测试调度

《CANoe快速入门实战:LIN节点调度开发》摘要 本文是CANoe系列教程的第十一章,重点讲解如何通过CAPL编程实现LIN报文的灵活调度控制。文章采用"输入-输出-过程"三步骤法,详细介绍了调度表函数linChangeSchedTable()、启动/停止函数linStartScheduler()/linStopDisturbance()等关键API的使用方法。作者创新性地通过系统变量在Test节点间接控制Network节点的调度功能,并提供了完整的节点代码实现方案。最后的Trace窗

weixin_53605885的博客 1022

Linux/Unix time时间戳的处理转换函数

<br />linux下的时间函数<br />我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。<br />linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。<br />time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点,可以用结构struct timeval,它精确到微妙。structtimeval<br

优快云 3万+

添加odbc数据源时的一些问题和解决办法

pl/sql

Mr_Syh的博客 9642

从混乱到清晰:用QJsonObject重构你的Qt网络API数据解析层(避坑指南)

本文详细介绍了如何使用QJsonObject重构Qt网络API数据解析层,避免常见的JSON解析陷阱。通过安全解析模式、数据绑定和性能优化技巧,帮助开发者构建高效、健壮的解析逻辑,提升代码可维护性和可读性。特别适用于处理复杂嵌套的JSON响应数据场景。

weixin_29011667的博客 230

time秒和年月日时分秒的转化

一、时间类型 1、time_t 用来存储从1970年到现在经过了多少秒; 2、struct timeval 精确到微秒; struct timeval { long tv_sec; // 秒 long tv_usec; // 微秒 }; 3、年月日结构 struct tm { int tm_sec; /秒,正常范围0-59, 但允许至61/ int tm_min; /分钟,0-59/ int tm_hour; /小时, 0-23/ int tm_mday; /日,即一个月中的第几天,1-31/ int

zhiyijue7762的博客 6468

Unity Tilemap瓦片动态缩放:保持网格尺寸不变的三种实现方案

本文详细探讨了在Unity中实现Tilemap瓦片动态缩放同时保持网格尺寸不变的三种核心方案。针对编辑器静态调整、整体风格化处理及运行时动态控制等不同场景,分别解析了直接修改瓦片属性、调整Tilemap Renderer材质参数以及使用SetTransformMatrix与Matrix4x4矩阵变换的实践方法、优缺点及选型指南,为2D游戏开发提供灵活高效的视觉与交互解决方案。

grass的博客 626

相对时间&绝对时间相互转换

#相对时间转换为绝对时间:2020-02-03 07:05:05 -----》1462451334 df_data.loc[:, 'datatime'] = [time.mktime(time.strptime(str(x), "%Y-%m-%d %H:%M:%S")) for x in df_data.datatime]``` #绝对时间转换为相对时间 df_save2.loc[:, 'datatime'] = [tim

qq_41953252的博客 4964

海洋CMS admin_notify.php 远程代码执行漏洞复现(CVE-2024-30565)

海洋CMS admin_notify.php 接口处存在远程代码执行漏洞,经过身份验证的远程攻击者可利用该漏洞执行任意代码,写入后门文件,进而控制整个web服务器。

0xSec 2713

c++ webrtc基础(1) :webrtc源码下载与编译、项目模块介绍、学习资料推荐

本篇博客介绍webrtc源码的下载与编译,以及推荐webrtc学习资料。 源码下载 电脑环境:win10/win11 64bit,合理的上网环境,没有合理的网络环境无法拉取、下载webrtc代码和工具,宽带速度要快,尽量50M. 主要步骤如下: (1) 安装git (2) 打开cmd控制台,下载google开发工具depot_tools: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git (3) 新建一个目

琅嬛福地 3295

linux标准时间和时间戳的转换

在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数。如/etc/shadow里的密码更改日期和失效日期,还有代理服务器的访问日志对访问时间的记录等等。   下面介绍几种时间戳格式和标准时间格式转换的方法: 1、分别以标准格式和时间戳来显示当前时间 [root@365linux ~]# date    2010年 08月 10日 星期二

petershina的专栏 1769

Uniapp微信小程序:详解根据角色权限动态展示底部tabbar,支持不同身份显示不同底部导航+灵活权限组合完整源码,菜单切换不闪烁、秒加载不卡(提供动态原生Tabbar配置+自定义组件形式2种方案)

uni-app微信小程序实现根据用户不同角色显示不同的tabBar,uniapp微信小程序原生tabbar实现动态菜单导航,微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色,动态pages,uni-app微信小程序动态tabBar,根据不同用户展示不同的tabBar,uni-app微信小程序动态切换tabBar,根据不同用户角色展示不同的tabBar,微信小程序自定义底部tabbar动态修改,Uniapp小程序根据权限(角色)不同动态展示底部tabbar,解决tabbar闪烁卡顿问题,小

✅ 精选推荐文章 4284

linux时间转换函数【转】

linux下的时间函数 我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。 linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。 time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点,可以用结构s

petershina的专栏 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

linux时间格式转换

在 Linux 系统中,你可以通过不同的方式来进行主机时间同步操作,其中最常用的方式是使用 NTP(Network Time Protocol)。NTP 是一种用于同步计算机系统时间的协议,它可以通过互联网或局域网连接到时间服务器,确保系统时间与标准时间同步。具体来说,这个选项会将系统时间同步到硬件时钟,即将当前系统时间写入到计算机的 BIOS/UEFI 中,以便下次开机时使用。通过以上步骤,你可以在 Linux 主机上使用 NTP 客户端来进行时间同步操作,确保系统时间与标准时间保持同步。

完颜振江 4137

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

linux中时间戳与时间之间转换的命令

linux中正常显示时间与时间戳的命令: [root@master history]# date +%F 2020-06-19 [root@master history]# date +%s 1592533825 把时间戳转换为时间的命令 [root@master history]# date -d @1592533825 2020年 06月 19日 星期五 10:30:25 CST 转换指定日期时间戳: [root@master history]# date -d '2020-2-22 22:22:2

lijun_work的博客 1735

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Linux下时间戳格式和标准时间格式的转换

大家都知道linux文件系统中的每个文件都有三种时间戳:访问时间(atime——access time):就是上次访问这个文件的时间。改变时间(ctime——change time):就是文件的inode改变的时间(什么是inode?)当你往一个文件中添加数据或者删除数据的时候,修改文件所有者的时候,链接改变的时候,文件的ctime就会发生改变。修改时间(mtime——modification t

Csoul89757 3786

linux将时间戳转换,linux时间戳转换

[lvhongmin@AY1401201736089361adZ bin.gatemaster]$ date2014年 05月 28日 星期三 11:24:59 CST[lvhongmin@AY1401201736089361adZ bin.gatemaster]$ date +%s1401247504[lvhongmin@AY1401201736089361adZ bin.gatemaster]...

weixin_29416629的博客 238

Linux 各种BCD时间与Unix时间戳格式转换

在Linux C或C++编程中,因为应用场景的不同,经常会遇到各种时间之间的装换,有时需要BCD时间,有时需要Unix时间戳,也有叫绝对时间的。这里介绍几种时间格式转换的应用。 Unix时间戳: Unix时间戳是一个绝对值,表示距离时间(1970-1-1, 00:00:00)的秒数。在C\C++ 语言中,用数据类型time_t 表示时间戳,time_t 本质上是一个long int。获

Biao 8132

linux日期时间转换函数,Linux时间戳、日期转换函数

Linux时间戳、日期转换函数:#include #include #include #include using namespace std;time_t date_to_timestamp(char *date, char *pfmt){struct tm t;strptime(date, pfmt, &t);time_t tt = mktime(&t);return tt;}...

weixin_39887715的博客 727

Linux date时间转换操作

获取毫秒值 date不支持直接获取毫秒值,需要使用纳秒转为毫秒。 nowNs=`date "+%s%N"` echo $nowNs nowMs=`expr $nowNs / 1000000` echo $nowMs 获取秒时间戳 nows=`date +%s` echo $nows 将秒转为时间 time=`date -d @1625153358` echo $time 格式化时间为指定格式 # 将时间转为"YYYY-mm-dd HH:mm:ss" t1=`date "+%Y-%m-%d %H:

upupfeng的博客 3725

【Linux编程——时间处理:获取当前时间戳、转换本地时间和格式化时间】

【Linux编程——时间处理:获取当前时间戳、转换本地时间和格式化时间】

Sugar_wolf的博客 1万+

linux 下时间转换(c接口)

以上架构的时间精度是基于秒的, 但是如果想提高精度, 例如提高到ms 怎么办? 我这里做音视频开发,每帧播放时间一般是40ms, 秒值太大了, 需要提高到ms级别. 方法1: 利用现有架构, 在其上追加毫秒. 我相信这是比较容易走通的. 方法2: 修改当前架构, 使其支持毫秒精度,这个方法难度更大,改动更深刻,理解更彻底! 我这里采用方法2, 字符串+双箭头+struct tm_ms+双箭头+time_t_ms

hjjdebug的专栏 1522

Linux 利用date命令进行时间戳转换

文章目录获取当前时间的时间戳获取已知时间的时间戳以指定格式输出时间 获取当前时间的时间戳 不加时间的情况下,默认输出当前时间的时间戳 Linux:~ # date +%s 实验效果 为了更好的展现效果,使用如下命令的方式来展示 Linux:~ # date ; date +%s Tue Mar 16 23:44:16 CST 2021 1615909456 将时间戳转换成时间显示 命令格式: date -d ‘@时间戳’ Linux:~ # date -d '@1615909456' Tue

以梦为马|越骑越傻 3565

LINUX 下时间转换为秒数

linux下时间是从1970.1.1开始算的秒数 //转来自网址 http://blog.youkuaiyun.com/wind19/article/details/6579495 $ dateTue Feb 3 11:29:00 CST 2009--把时间转成秒数$ date +%s1233631748 date +%s -d '2004/06/04 20:30:00'108635220...

weixin_30825199的博客 1051
上一篇: c 正则匹配简单运用
下一篇: 获取系统时间的各种格式。。
Dablekai
博客等级 码龄15年 2粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值