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:%02d\n",
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++ 获取系统时间内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++设置系统时间及系统时间网络更新的方法

    本文实例讲述了C++设置系统时间及系统时间网络更新的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: //根据返回的时间设置系统时间 void setTimeFromTP(ULONG ulTime) {      FILETIME ft;      SYSTEMTIME st;        //将基准时间转换成windows文件时间      st.wYear = 1900;      st.wMonth = 1;      st.wDay = 1;      st.wHo

  • C/C++如何获取当前系统时间的实例详解

     C/C++如何获取当前系统时间的实例详解 C库中与系统时间相关的函数定义在<time.h>头文件中, C++定义在<ctime>头文件中. 一.time(time_t*)函数 函数定义如下: time_t time (time_t* timer); 获取系统当前日历时间 UTC 1970-01-01 00:00:00开始的unix时间戳 参数:timer 存取结果的时间指针变量,类型为time_t,指针变量可以为null.如果timer指针非null,则time()函数返回值变量

  • VC++ 获取系统时间的方法汇总

    1.使用CTime类(获取系统当前时间,精确到秒) CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime();//获取系统日期 str=tm.Format("现在时间是%Y年%m月%d日 %X"); MessageBox(str,NULL,MB_OK); a,从CTimet中提取年月日时分秒 CTime t = CTime::GetCurrentTime(); int d=t.GetDay(); //获得几号 int y=t.

  • C++实现调用系统时间简单示例

    本文简述了基于VC++实现的调用系统时间的简单示例,这里只列出主要部分代码,供大家参考一下,具体如下: 首先要注意添加头文件: #include <Windows.h> 然后就简单了,这里只粘出主要用法如下: #ifdef _SECURITY SYSTEMTIME sysTime; ZeroMemory(&sysTime, sizeof(sysTime)); GetLocalTime(&sysTime); if (sysTime.wYear > _DURE_DATE_YE

  • C++获取当前系统时间的方法总结

    本文实例讲述了C++获取当前系统时间的方法.分享给大家供大家参考.具体如下: 方案- 优点:仅使用C标准库:缺点:只能精确到秒级 #include <time.h> #include <stdio.h> int main( void ) { time_t t = time(0); char tmp[64]; strftime(tmp,sizeof(tmp),"%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t)); puts(

  • 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*

  • Java 获取当前系统时间的三种方法

    准备工作: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; 方式一: /**  * 获取系统当前时间之方式一  * @explain 使用Calendar实现  * @param format  * @return  */ public static String getSysdateStr(String format) {     Date sysdate = Calend

  • cmd下获取当前系统时间的bat

    如何获取日期呢? 格式: %date% 注:cmd中测试需要用echo %date%,bat中直接使用即可 结果: 2020/03/13 周五 如何获取时间呢? 格式: %time% 注:cmd中测试需要用echo %time%,bat中直接使用即可 结果: 20:50:29.66 这是获取的系统标准格式的日期和时间,但是有时候我们需要使用规定的格式,怎么办呢? 格式: %date:~x,y%以及%time:~x,y% 说明: x是开始位置,y是取得字符数 比如说我要获取完整的日期和时间, 格式

  • PowerShell中使用Get-Date获取日期时间并格式化输出的例子

    在PowerShell中有一个Get-Date的cmdlet,使用它可以直接返回当前的日期和时间.使用-Format参数可以返回当前的年.月.日.时.分.秒等. Get-Date的直接使用 在PowerShell中直接调用Get-Date,可以返回当前的日期和时间,包括年.月.日.时.分.秒.举例如下: 复制代码 代码如下: PS C:\Users\zhanghong> Get-Date 2013年9月9日 22:26:56 Write-Host中使用Get-Date 注意:在Write-Hos

  • PHP获取当前系统时间的方法小结

    一.获取当前时间戳 方法1:通过time函数 time(); 方法2:通过$_SERVER中的REQUEST_TIME元素 $_SERVER['REQUEST_TIME']; 方法3:通过strtotime函数 strtotime('now')); 二.获取当前时间 通过date函数格式化时间戳 echo date('Y-m-d h:i:s', time()); // 2018-10-3 15:57:05 三.时区问题 上述方法都存在时区问题,具体解决: 方法一:php.ini中修改为中国时区

  • PHP获取当前日期和时间及格式化方法参数

    使用函式 date() 实现 复制代码 代码如下: <?php echo $showtime=date("Y-m-d H:i:s");?> 显示的格式: 年-月-日 小时:分钟:秒 相关时间参数: a - "am" 或是 "pm" A - "AM" 或是 "PM" d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31" D - 星期几

  • iOS时间字符串格式化输出技巧详解

    一.前言 最近项目开发过程中用到了大量的关于时间的处理,将后台返回的时间字符串转换为指定的格式时间再显示在UI上. 例如: 将后台返回的时间字符串2017-04-16 13:08:06转换为:2017年04月16日.2017年04月.04月16日.2017-04-16.2017-04.04-16.13:08.星期几等等. 项目是多人开发,由于前期没有统一处理时间转换的问题,后期发现项目中好多关于时间转换的代码,大部分都是通过(- : 等字符)截取成字符串数组再取相应时间拼接成指定格式,输出在UI

随机推荐