C/C++读取时间的方法

【摘要】本文介绍C/C++下获取日历时间的方法,区别于JAVA语言的方便,C/C++标准库好像并没有一次性得到具有可读性的HH:MM:SS的方法,本文介绍常用的三步法得出具有可读性的时间,并且介绍了纳秒和微秒的时间获取。

1、对于C语言,需包含的头文件:

1 #include <sys/time.h>

2、获取日期需要先获取日历时间,即1970年1月1日 00:00:00至今的秒数,在linux系统为time_t类型,其相当于1个long型。

然后将time_t转成tm结构体,tm结构体包括分、秒、时、天、月、年等数据。

使用clock_gettime获取日历时间代码如下:

#include <iostream>
#include <sys/time.h>
using namespace std;
int main(){
    struct timespec tsp;
    clock_gettime(CLOCK_REALTIME,&tsp);

    struct tm *tmv = gmtime(&tsp.tv_sec);

    cout<<"日历时间:"<<tsp.tv_sec<<endl;
    cout<<"UTC中的秒:"<<tmv->tm_sec<<endl;
    cout<<"UTC中的时:"<<tmv->tm_hour<<endl;
}

结果:日历时间:1475654852UTC中的秒:32UTC中的时:8

获取日历时间有如下三种:

time_t time(time_t *calptr);//精确到秒
int clock_gettime(clockid_t clock_id, struct timespec *tsp);//精确到纳秒
int gettimeofday(struct timeval *restrict tp, void *restrict tzp);//精确到微秒

3、如需获取毫秒和微秒,则不能使用以上的time_t和tm数据,在C/C++中提供了timespec和timeval两个结构供选择,其中timespec包括了time_t类型和纳秒,timeval包括了time_t类型和微秒类型。

#include <iostream>
#include <sys/time.h>
using namespace std;
int main(){
    struct timespec tsp;
    struct timeval tvl;
    clock_gettime(CLOCK_REALTIME,&tsp);
    cout<<"timespec中的time_t类型(精度秒):"<<tsp.tv_sec<<endl;
    cout<<"timespec中的纳秒类型:"<<tsp.tv_nsec<<endl;

    gettimeofday(&tvl,NULL);
    cout<<"timeval中的time_t类型(精度秒)"<<tvl.tv_sec<<endl;
    cout<<"timeval中的微秒类型:"<<tvl.tv_usec<<endl;
}

结果:timespec中的time_t类型(精度秒):1475654893timespec中的纳秒类型:644958756timeval中的time_t类型(精度秒)1475654893timeval中的微秒类型:645036

4、用易于阅读的方式显示当前日期,C/C++提供strptime函数将time_t转成各类型的时间格式,但是它比较复杂,以下是一个例子:

#include <iostream>
#include <sys/time.h>
using namespace std;
int main(){
    struct timespec tsp;
    clock_gettime(CLOCK_REALTIME,&tsp);
    char buf[64];
    struct tm *tmp = localtime(&tsp.tv_sec);
    if (strftime(buf,64,"date and time:%Y-%m-%d %H:%M:%S",tmp)==0){
        cout<<"buffer length is too small\n";
    }
    else{
        cout<<buf<<endl;
    }
}
结果:date and time:2016-10-05 16:02:45

5、C/C++中时间数据类型和时间函数的关系

时间: 2024-10-20 16:27:01

C/C++读取时间的方法的相关文章

基于图像识别测试手机浏览器打开网页首屏时间的方法

本文涉及性能测试技术,特别是涉及一种基于图像识别的测试手机网页首屏时间的方法,它可以应用在手机浏览器页面加载响应时间的的自动化测试或性能检测中.同时可以应用到其他android的apk的响应时间的测试中去 随着智能手机等移动终端的发展,越来越多的用户开始通过手机等设备浏览网页,以获取用户所需的信息. 用户使用手机访问网站是基于手机浏览器所获取的网页实现的.通常情况下,用户访问网站的页面全部加载完毕时,总页面高度可能有一屏到多屏不等,总的页面加载时间要比首屏加载时间长很多,但是首屏加载时间是用户对

python操作日期和时间的方法

经常获得了一个用户提交的当前日期,我们需要以这个日期为依据返回它的前一天.后一天的日期或者转换操作等.用Python可以非常简单的解决这些关于日期计算的问题. 不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法. 1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray 

C#中winform使用相对路径读取文件的方法

这篇文章主要介绍了C#中winform使用相对路径读取文件的方法,实例分析了C#使用相对路径读取文件的技巧与实际应用,需要的朋友可以参考下 本文实例讲述了C#中winform使用相对路径读取文件的方法.分享给大家供大家参考.具体分析如下: 目录结构如下图所示:   方法一:由于生成的exe文件在bin\debug目录下,可以使用向上查找目录的方式获取要读取的xml文件 复制代码代码如下: string haarXmlPath = @"../../haarcascade_frontalface_a

Linux修改时间的方法

Linux修改时间的方法 在命令行输入: date 显示当前时间 Fri Aug  3 14:15:16 CST 2007 date '+%x %X' 显示当前时间 2009年08月03日 14时15分00秒 date -s 按字符串方式修改时间 可以只修改日期,不修改时间,输入: date -s 2007-08-03 只修改时间,输入:date -s 14:15:00 同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:date -s "2007-08-03 14:15:00&qu

减短页面加载时间的方法

1>css的定义放在文件头部 2>js脚本放在文件末尾 3>压缩js,css代码 4>服务器开启giip压缩 5>尽量减少页面中重复出现的http请求数量 减短页面加载时间的方法,布布扣,bubuko.com

【转】matlab读取文件各种方法

本技术支持指南主要处理:ASCII, binary, and MAT files.要得到MATLAB中可用来读写各种文件格式的完全函数列表,可以键入以下命令: help iofun MATLAB中有两种文件I/O程序:high level and low level. High level routines: 包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程.Low level routines: 可以更加灵活的完成相对特殊的任务,需要较多的额外编程. High level ro

Linux中逐行读取文件的方法

  Linux中逐行读取文件的方法             在linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法.为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. 方法1:while循环中执行效率最高,最常用的方法. function while_read_LINE_bottm(){ While read LINE do echo $LINE done   < $FILENAME } 注释:我习惯把

记录一种读取XML的方法

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace ConsoleApplication_readxml { class Program { static void Main(string[] args) { string xml

PHP获取当前日期和时间格式化方法

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