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()函数返回值变量与timer指针一样,都指向同一个内存地址;否则如果timer指针为null,则time()函数返回一个time_t变量时间。

返回值,如果成功,获取当前系统日历时间,否则返回 -1。

二、结构体 struct tm

变量 类型 说明 范围
tm_sec int 每分钟的秒数 [0 - 61]
tm_min int 每小时后面的分钟数 [0 - 59]
tm_hour int 凌晨开始的小时数 [0 - 23]
tm_mday int 从每月份开始算的天数 [1 - 31]
tm_mon int 从一月份开始的月份数 [0 - 11]
tm_year int 从1900年开始的年数  
tm_wday int 从每周天开始算的天数 [0 - 6]
tm_yday int 一年的第几天,从零开始 [0 - 365]
tm_isdst int 夏令时  
       

这里有几个地方要注意:

1. tm_sec 在C89的范围是[0-61],在C99更正为[0-60]。通常范围是[0-59],只是某些系统会出现60秒的跳跃。

2. tm_mon 是从零开始的,所以一月份为0,十二月份为11。

三、本地时间转换函数localtime(time_t*)

函数原型

struct tm * localtime (const time_t * timer);

将日历时间转换为本地时间,从1970年起始的时间戳转换为1900年起始的时间数据结构

四、源码及编译

current_time.cpp

#include <cstdio>
#include <ctime> 

int main(int argc, char* argv[]) {
  time_t rawtime;
  struct tm *ptminfo; 

  time(&rawtime);
  ptminfo = localtime(&rawtime);
  printf("current: %02d-%02d-%02d %02d:%02d:%02d\n",
      ptminfo->tm_year + 1900, ptminfo->tm_mon + 1, ptminfo->tm_mday,
      ptminfo->tm_hour, ptminfo->tm_min, ptminfo->tm_sec);
  return 0;
}

编译及运行

$ g++ current_time.cpp

$ ./a.out

current: 2017-07-26 23:32:46

以上就是 C/C++如何获取当前系统时间的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2017-08-21

基于C/C++时间函数的使用详解

C/C++对时间的操作也有许多值得大家注意的地方.最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作.获取和显示等等的问题.下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.通过学习许多C/C++库,你可以有很多操作.使用时间的方法.但在这之前你需要了解一些"时间"和"日期"的概念,主要有以下几个:Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Gre

C/C++判断传入的UTC时间是否当天的实现方法

这里先给出一个正确的版本: 复制代码 代码如下: #include <iostream>#include <time.h> using namespace std; bool IsInToday(long utc_time){ time_t timeCur = time(NULL);    struct tm curDate = *localtime(&timeCur); struct tm argsDate = *localtime(&utc_time); if

js判断传入时间和当前时间大小实例(超简单)

实例如下: //判断时间是否过期 function judgeTime(time){ var strtime = time.replace("/-/g", "/");//时间转换 //时间 var date1=new Date(strtime); //现在时间 var date2=new Date(); //判断时间是否过期 return date1<date2?true:false; } 以上这篇js判断传入时间和当前时间大小实例(超简单)就是小编分享给大家

Python中实现对Timestamp和Datetime及UTC时间之间的转换

Python项目中很多时候会需要将时间在Datetime格式和TimeStamp格式之间转化,又或者你需要将UTC时间转化为本地时间,本文总结了这几个时间之间转化的函数,供大家参考. 一.Datetime转化为TimeStamp def datetime2timestamp(dt, convert_to_utc=False): ''' Converts a datetime object to UNIX timestamp in milliseconds. ''' if isinstance(d

C++中获取UTC时间精确到微秒的实现代码

在日常开发过程中经常会使用到时间类函数的统计,其中获取1970年至今的UTC时间是比较常使用的,但是在windows下没有直接能够精确到微妙级的函数可用.本文提供方法正好可以解决这类需求问题. 下面先给出C++实现代码: 复制代码 代码如下: #ifndef UTC_TIME_STAMP_H_#define UTC_TIME_STAMP_H_ #include <windows.h>#include <sys/timeb.h>#include <time.h> #if

PHP跨时区(UTC时间)应用解决方案

1.将程序内部时区设置为UTC时间.(UTC 也可以叫 GMT) PHP设置: date_default_timezone_set("UTC"); Yii设置: config/main.php 中添加 :'timeZone'=>'UTC', 如此设置后,PHP生成的时间基本都是UTC时间了.例如: //输出当前UTC时间 date("Y-m-d H:i:s"); 2.数据库中存储UTC时间. 可以用PHP控制,也可以通过设置数据库时区来实现. 3.服务端发送到

详解JavaScript UTC时间转换方法

一.前言 1.UTC: Universal Time Coordinated,协调世界时. 2.格林尼治标准时(GMT)     格林尼治标准时间(Greenwich Mean Time,GMT)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线. 理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时的时间.由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟. 地球每天的自转是有些不规则的,而且正在缓慢减速.所以,格林尼

Java获取UTC时间的方法详解

本文实例讲述了Java获取UTC时间的方法.分享给大家供大家参考,具体如下: 取得本地时间: java.util.Calendar cal = java.util.Calendar.getInstance(); 取得指定时区的时间: java.util.TimeZone zone = java.util.TimeZone.getTimeZone("GMT-8:00″); java.util.Calendar cal = java.util.Calendar.getInstance(zone);

C/C++标准库之转换UTC时间到local本地时间详解

前言 UTC 时间DateTime.UtcNow 和 系统本地时间 DateTime.Now 相差8个时区 ,美国本地时间和北京时间相差15个时区: 美国,而一般使用UTC时间方便统一各地区时间差异. 场景 1.如果有面向全球用户的网站, 一般在存储时间数据时存储的是UTC格式的时间, 这样时间是统一的, 并可以根据当地时区来进行准确的转换. 2.存储本地时间的问题就在于如果换了时区, 那么显示的时间并不正确. 所以我们存储时间时最好还是存储UTC时间,便于正确的转换. 说明 1.C/C++标准

Python的UTC时间转换讲解

UTC时间转换,最终得到的都是UTC时间. 简单来说就是: 时间戳(timestamp) 转换-> UTC显示时间(datetime),使用time.gmtime(timestamp). 显示时间(datetime) 转换-> UTC时间戳(timestamp),使用calendar.timegm(datetime.timetuple()). 注意: VC下相应的接口是gmtime和_mkgmtime. 代码: # -*- coding: gb2312 -*- # UTC时间转换,最终得到的都

python 实现UTC时间加减的方法

如下所示: #!/usr/bin/env python # -*- coding:utf-8 -*- import datetime time_delta = datetime.timedelta(hours=-2) time_now = datetime.datetime.utcnow() invalid_time = str(time_now + time_delta)[:19] print invalid_time 以上这篇python 实现UTC时间加减的方法就是小编分享给大家的全部内容