C++获取本地时间常见方法汇总

1.跨平台方法

1.1方法一:手动暴力法

#include <iostream>
using namespace std;
#include <time.h>

time_t t = time(NULL);
struct tm* stime=localtime(&t);
char tmp[32]={NULL};
sprintf(tmp, "%04d-%02d-%02d %02d:%02d:%02d",1900+stime->tm_year,1+stime->tm_mon,stime->tm_mday, stime->tm_hour,stime->tm_min,stime->tm_sec);
cout<<tmp<<endl;

输出结果:

2015-04-02 23:12:56

1.2方法二:投机取巧法

#include <iostream>
using namespace std;
#include <time.h>

time_t t = time(0);
char tmp[32]={NULL};
strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime(&t));
cout<<tmp<<endl;

输出结果:

2015-04-02 23:12:56

1.3方法三:简获日历时间法

#include <iostream>
using namespace std;
#include <time.h>
#include <string>

time_t tm;
time(&tm);
char tmp[128]={NULL};
strcpy(tmp,ctime(&tm));
//或者
//struct tm* stime=localtime(&tm);
//strcpy(tmp,asctime(stime));
cout<<tmp<<endl;

输出结果:

Fri Aug 14 23:19:42 2015

2.Windows平台获取时间

#include <iostream>
using namespace std;
#include <time.h>
#include <windows.h>

SYSTEMTIME sys;
GetLocalTime(&sys);
char tmp[64]={NULL};
sprintf(tmp,"%4d-%02d-%02d %02d:%02d:%02d ms:%03d",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds);
cout<<tmp<<endl;

输出结果:

2015-08-14 23:41:56 ms:354

3.Unix平台获取时间

#include <sys/time.h>
#include <unistd.h>

struct timeval now_time;
gettimeofday(&now_time, NULL);
time_t tt = now_time.tv_sec;
tm *temp = localtime(&tt);
char time_str[32]={NULL};
sprintf(time_str,"%04d-%02d-%02d%02d:%02d:%02d",temp->tm_year+ 1900,temp->tm_mon+1,temp->tm_mday,temp->tm_hour,temp->tm_min, temp->tm_sec);
cout<<tmp<<endl;

输出时间:

2015-08-14 23:41:56

4.需知知识点

(1)UTC (Coordinated Universal Time):协调世界时,又称世界标准时间。曾由格林威治平均时间(Greenwich Mean Time,GMT)提供,现在由原子钟提供。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。

(2)Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间,由time()函数获取。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。

(3)Epoch指的是一个特定的时间点:1970-01-01 00:00:00 UTC,即Unix 时间戳。

(4)clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。
在VC++的time.h文件中,我们可以找到相关的定义:

#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif

#define CLOCKS_PER_SEC ((clock_t)1000)

clock_t clock( void );

这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计
时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。

//获取逝去时间
clock_t start, finish;
start=clock();
…
finish=clock();

//逝去多少秒
long duration=(finish- start)/ CLOCKS_PER_SEC;

(5) time.h还提供了两种不同的函数将日历时间(一个用time_t表示的整数)转换为我们平时看到的年月日时分秒分开显示的时间格式tm:

struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);

其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转化为本地时间。比如现在用gmtime()函数获得的世界标准时间是2005年7月30日7点18分20秒,那么我用localtime()函数在中国地区获得的本地时间会比世界标准时间晚8个小时。

(6)分解时间就是以年、月、日、时、分、秒等分量保存的时间结构,在C/C++中是tm结构。我们可以使用mktime()函数将用tm结构表示的时间转化为日历时间。其函数原型如下:

time_t mktime(struct tm * timeptr);

该函数与gmtime和localtime函数具有相反的作用。

以上就是C++获取本地时间常见方法汇总的详细内容,更多关于C++ 获取本地时间的资料请关注我们其它相关文章!

(0)

相关推荐

  • 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()函数返回值变量

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

  • c/c++获取系统时间函数的方法示例

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

  • 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++中获取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

  • C++获取本地时间常见方法汇总

    1.跨平台方法 1.1方法一:手动暴力法 #include <iostream> using namespace std; #include <time.h> time_t t = time(NULL); struct tm* stime=localtime(&t); char tmp[32]={NULL}; sprintf(tmp, "%04d-%02d-%02d %02d:%02d:%02d",1900+stime->tm_year,1+sti

  • python 获取utc时间转化为本地时间的方法

    方法一: import datetime timenow = (datetime.datetime.utcnow() + datetime.timedelta(hours=8)) #将utc时间转化为本地时间 timetext = timenow.strftime('%y%m%d') 方法二: import datetime import dateutil.parser st_time = hit['_source']['start_time'] re_time = hit['_source']

  • C/C++获取当前时间的方法总结(最全)

    目录 一.获取当前时间 1.使用C语言标准库 2.使用VS提供的ATL模板库 3.使用Win API 二.代码解析 1.time函数 2.localtime函数 3.tm结构体 4.localtime_s函数 5.CTime类 6.GetLocalTime函数 一.获取当前时间 1.使用C语言标准库 代码 #define _CRT_SECURE_NO_WARNINGS //VS中必须定义,否则报错 #include<ctime> #include<stdio.h> int main

  • JavaScript获取服务器端时间的方法

    用js做时间校正,获取本机时间,是存在bug的. 使用js也可获取到服务器时间,原理是使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了.以下: 1.依赖jQuery 代码: function getServerDate(){ return new Date($.ajax({async: false}).getResponseHeader("Date")); } 以上函数返回的就是一个Date对象,注意在使用ajax时必须同步,要不然无法返回时间日期. 无需填写

  • Python获取当前时间的方法

    我有的时候写程序要用到当前时间,我就想用python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次,为了能够更好的记住,我今天特意写下获取当前时间的方法,如果你觉的对你有用的话,可以收藏下. 取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方文档了解下,要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年到现在时间相隔的时间. 你可以试下下面的方式来取得当前时间的时间戳:import timeprin

  • JavaScript获取服务器时间的方法详解

    本文实例讲述了JavaScript获取服务器时间的方法.分享给大家供大家参考,具体如下: Javascript是运行在客户端的脚本,我们一般都用new Date()来获取当前时间,但是得到的是客户端的时间,客户端时间是随意更改的,如果要做一个产品发布倒计时的话,客户端时间一改,就要闹笑话了.业务中需要用到服务器时间的场景还有很多,那么仅仅通过js怎么拿到服务器时间呢?事实上,只需要一个ajax请求就搞定,通过读取XMLHttpRequest对象的响应头里面的时间戳得到当前服务器时间! 原理就是这

  • 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);

  • JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)

    本文实例讲述了JS简单获取当前日期时间的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>JS日期时间</title> <meta http-equiv

  • C#获取文件创建时间的方法

    本文实例讲述了C#获取文件创建时间的方法.分享给大家供大家参考.具体如下: C#获取文件创建时间,主要用到了FileInfo的CreattionTime属性 using System; using System.IO; class Class1 { static void Main(string[] args) { string[] cla = Environment.GetCommandLineArgs(); if (cla.GetUpperBound(0) == 2) { FileInfo

随机推荐