大家在平时的项目中,一定经常面临打日志信息的问题,在打日志这个问题上,大家有时一定会非常关注【时间戳】这个信息点。
想必大家也很经常使用【gettimeofday】接口来获取当前的系统时间,但是很遗憾的是,它获取的时间信息是存储在一个叫strcut timeval的结构体中。那么如何将这个结构体的时间信息转换为可是显示的时间字符串呢?
比如显示 "2018-12-10 20:52:00"。本文就将给你答案,直接附上代码:
#include
#include
#include
#include
//由struct timeval结构体数据(由gettimeofday获取到的)转换成可显示的时间字符串
static char * get_local_time(char *time_str, int len, struct timeval *tv)
{
struct tm* ptm;
char time_string[40];
long milliseconds;
ptm = localtime (&(tv->tv_sec));
/* 格式化日期和时间,精确到秒为单位。*/
//strftime (time_string, sizeof(time_string), "%Y/%m/%d %H:%M:%S", ptm); //输出格式为: 2018/12/09 10:48:31.391
//strftime (time_string, sizeof(time_string), "%Y|%m|%d %H-%M-%S", ptm); //输出格式为: 2018|12|09 10-52-28.302
//strftime (time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm); //输出格式为: 2018-12-09 10:52:57.200
strftime (time_string, sizeof(time_string), "%Y\\%m\\%d %H-%M-%S", ptm); //输出格式为: 2018\12\09 10-52-28.302
/* 从微秒计算毫秒。*/
milliseconds = tv->tv_usec / 1000;
/* 以秒为单位打印格式化后的时间日期,小数点后为毫秒。*/
snprintf (time_str, len, "%s.%03ld", time_string, milliseconds);
return time_str;
}
int main(int argc, const char **argv)
{
char local_time_str[128];
char *p = NULL;
struct timeval tv;
gettimeofday(&tv, NULL);
p = get_local_time(local_time_str, sizeof(local_time_str), &tv);
printf("Get local time: \n%s\n", p);
return 0;
}
编译代码,输入:
gcc -o time_string_format time_string_format.c
测试结果如下:
上文的示例代码中,给出了好几种打印时间戳格式的示例,笔者只演示了其他的一种,其他的几种,有待读者亲自去验证。验证的过程中,如果有发现什么问题,可随时与我联系。
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
字符串
+关注
关注
1文章
579浏览量
20512 -
代码
+关注
关注
30文章
4788浏览量
68600 -
结构体
+关注
关注
1文章
130浏览量
10841
发布评论请先 登录
相关推荐
字符串的表示
字符串的表示 随着计算机在文字处理与信息管理中的广泛应用, 字符串已成为最常用的数据类型之一, 许多计算机中都提供字符串操作功能, 一些计算机还给出读写字
发表于 10-13 17:11
•3067次阅读
字符串移位包含的问题解决方案
问题:给定字符串s和t,判断是否字符串t能通过将s移位后的字符串所包含。 方法一 最简单的方法就是将s进行循环移位,再判断移位后的
发表于 11-29 10:05
•1048次阅读
LabVIEW的常用字符串操作教程免费下载
字符串操作与信息的保存和显示密不可分,而字符串操作运用也是LabⅥEW程序设计的一个难点,因此熟练使用字符串操作函数是使用LabⅥEW进行编程所必备的能力之
发表于 08-21 14:51
•26次下载
什么是复制字符串?Python如何复制字符串
。 在上一篇文章《你真的知道Python的字符串怎么用吗?》里,我突发奇想,将字符串跟列表做了比较,然后发现字符串竟然没有复制的方法。当时没有细想,只说要搁置疑问。过后,有好学的小伙伴
发表于 11-25 10:32
•3017次阅读
strtok拆分字符串
大家好,我是惊觉,今天聊聊字符串。字符串的使用场景非常之多,人机交互和双机通信都会用到。比如:通过串口向单片机发送指令,以执行操作或配置参数。单片机读取传感器数据,数据格式是字符串。一般GPS数据
发表于 01-13 15:46
•8次下载
字符串函数重写练习
字符串函数重写练习:字符串比较、字符串拼接、字符串查找、字符串拷贝、内存比较、内存拷贝、内存初始化、内存比较、二维数组定义及基本使用、位运算
一文详解JavaScript字符串
JavaScript字符串是原始值。此外,字符串是不可变的。这意味着如果你修改一个字符串,你总是会得到一个新的字符串。原始字符串不会被改变。
python字符串有哪些特定方法
python字符串序列操作也适用于列表和元组。
python字符串还有独有方法,即字符串对象的函数,其他对象不可调用,只有字符串对象可调用。
字符串的相关知识
TCL 中的数据类型只有一种:字符串。这些字符串可以是字母、数字、布尔值、标点符号等特殊字符的组合。在某些特殊命令的作用下,字符串可以向其他数据类型转换。下面
MySQL替换字符串函数REPLACE
MySQL是目前非常流行的开源数据库管理系统之一,它具有强大的功能和性能。其中之一的字符串函数REPLACE,可以用于替换字符串中的指定字符或字符串。在本文中,我们
labview字符串如何转换为16进制字符串
在LabVIEW中,将字符串转换为16进制字符串是一个常见的需求,尤其是在处理数据通信和硬件接口时。LabVIEW提供了多种方法来实现这一转换,包括使用内置函数、编写VI(Virtual
评论