C++如何获取当前系统时间及格式化输出分享!

本文主要使用time() 及strftime() 函数实现c++获取系统时间。

C++系统和时间相关的函数基本上都是使用C语言提供的标准接口

在程序中获取系统时间是常见的操作,很多情况下使用系统提供的time函数即可获取。

time() 是系统C语言的标准接口,通过man time 或者man 2 time 可查看详细的使用方法。

  include <time.h>  include <stdio.h>  int main()  {  time_t tt = time(NULL);  tm* t=localtime(&tt);  printf("%d-%02d-%02d %02d:%02d:%02dn",  t->tm_year + 1900,  t->tm_mon + 1,  t->tm_mday,  t->tm_hour,  t->tm_min,  t->tm_sec);  }

将文件保存为timetest.cpp,在linux下使用g++命令编译:

g++timetest.cpp

成功会生成a.out,执行命令即可看到输出:

./a.out

这是最常用的方法,当然另外还有其它函数可使用,可参考以下函数,这里不在详述。

date(1),gettimeofday(2), ctime(3), ftime(3), time(7)

时间字符串处理

用上面的time函数获取时间后返回的是tm 的结构体,通常我们需要转换为字符串的方式使用。

这时strftime可派上用场,这个函数常用来格式化时间和日期。

  #include <time.h>  #include <stdio.h>  #include <stdlib.h>  int  main(int argc, char   argv[])  {  char outstr[200];  time_t t;  tmp;  t =time(NULL);  tmp =localtime(&t);  if (tmp == NULL) {  perror("localtime");  exit(EXIT_FAILURE);  }  if (strftime(outstr, sizeof(outstr), argv[1], tmp) == 0) {  fprintf(stderr, "strftime returned0");  exit(EXIT_FAILURE);  }  printf("Result string is "%s"n", outstr);  exit(EXIT_SUCCESS);  } /* main */

使用方法同上编译,运行时出入时间格式:

  $ ./a.out '%m'     Result string is "11"      $./a.out '%5m'     Result string is "00011"      $./a.out '%_5m'     Result string is "  11"

strftime支持多种日期时间格式,详细如下,需要注意大小写哦:

%a 星期几的简写

%A 星期几的全称

%b 月分的简写

%B 月份的全称

%c 标准的日期的时间串

%C 年份的后两位数字

%d 十进制表示的每月的第几天

%D 月/天/年

%e 在两字符域中,十进制表示的每月的第几天

%F 年-月-日

%g 年份的后两位数字,使用基于周的年

%G 年分,使用基于周的年

%h 简写的月份名

%H 24小时制的小时

%I 12小时制的小时

%j 十进制表示的每年的第几天

%m 十进制表示的月份

%M 十时制表示的分钟数

%n 新行符

%p 本地的AM或PM的等价显示

%r 12小时的时间

%R 显示小时和分钟:hh:mm

%S 十进制的秒数

%t 水平制表符

%T 显示时分秒:hh:mm:ss

%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)

%U 第年的第几周,把星期日做为第一天(值从0到53)

%V 每年的第几周,使用基于周的年

%w 十进制表示的星期几(值从0到6,星期天为0)

%W 每年的第几周,把星期一做为第一天(值从0到53)

%x 标准的日期串

%X 标准的时间串

%y 不带世纪的十进制年份(值从0到99)

%Y 带世纪部分的十制年份

%z,%Z 时区名称,如果不能得到时区名称则返回空字符。

%% 百分号

下面在看段代码c++获取当前系统时间并格式化输出

  #include <string>  #include <time.h>  using namespace std;  string getTime()  {    time_t timep;    time (&timep);    char tmp[64];    strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime(&timep) );    return tmp;  }  int main(){    string  time = getTime();    cout << time << endl;    return 0;  }

总结

到此这篇关于C++如何获取当前系统时间及格式化输出的文章就介绍到这了,更多相关c++ 获取系统时间内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

—-想了解C++如何获取当前系统时间及格式化输出分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/483937.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐