一、  通过time_t和tm

struct tm
{int tm_sec;   // seconds after the minute - [0, 60] including leap secondint tm_min;   // minutes after the hour - [0, 59]int tm_hour;  // hours since midnight - [0, 23]int tm_mday;  // day of the month - [1, 31]int tm_mon;   // months since January - [0, 11]int tm_year;  // years since 1900int tm_wday;  // days since Sunday - [0, 6]int tm_yday;  // days since January 1 - [0, 365]int tm_isdst; // daylight savings time flag
};
#include <iostream>
#include <time.h>using namespace std;
int main()
{// Unix标准时间戳(1970年1月1日0点0分0秒,GMT)经过了多少秒time_t time_now = time(0);cout << "1970年1月1日0点0分0秒 到目前经过秒数:" << time_now << endl;tm* ltm = localtime(&time_now);char location_now[20];sprintf_s(location_now, "%d%02d%02d, %02d:%02d:%02d", 1900 + ltm->tm_year, 1 + ltm->tm_mon, ltm->tm_mday, ltm->tm_hour, ltm->tm_min, ltm->tm_sec);delete ltm;std::cout << "now: " << location_now << std::endl;return 0;
}

这段代码在64位系统上运行会提示错误:

解决方法有三种:

1.属性里面预编译宏加上_CRT_SECURE_NO_WARNINGS

2.加入 #pragma warning(disable : 4996)

3.用locatime_s

#include <iostream>
#include <time.h>using namespace std;
int main()
{// Unix标准时间戳(1970年1月1日0点0分0秒,GMT)经过了多少秒time_t time_now = time(0);cout << "1970年1月1日0点0分0秒 到目前经过秒数:" << time_now << endl;tm* ltm = new tm();localtime_s(ltm, &time_now);char location_now[20];sprintf_s(location_now, "%d%02d%02d, %02d:%02d:%02d", 1900 + ltm->tm_year, 1 + ltm->tm_mon, ltm->tm_mday, ltm->tm_hour, ltm->tm_min, ltm->tm_sec);delete ltm;std::cout << "now: " << location_now << std::endl;return 0;
}

二、GetTickCount

GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。

函数原型是DWORD GetTickCount(void),返回值以32位的双字类型DWORD存储,因此可以存储的最大值是(2^32-1) ms约为49.7天,因此若系统运行时间超过49.7天时,
这个数就会归0,MSDN中也明确的提到了:"Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days."。
因此,如果是编写服务器端程序,此处一定要万分注意,避免引起意外的状况。

#include <iostream>
#include <Windows.h>
using namespace std;int main()
{DWORD tmStart, tmEnd;tmStart = GetTickCount();Sleep(2000);tmEnd = GetTickCount();cout << "Time interval = " << (tmEnd - tmStart) << "ms\n ";return 0;
}

会弹出这样的提示:

可以直接用GetTickCount64()

#include <iostream>
#include <Windows.h>
using namespace std;int main()
{DWORD tmStart, tmEnd;tmStart = GetTickCount64();Sleep(2000);tmEnd = GetTickCount64();cout << "Time interval = " << (tmEnd - tmStart) << "ms\n ";return 0;
}

三、SYSTEMTIME

typedef struct _SYSTEMTIME {WORD wYear;WORD wMonth;WORD wDayOfWeek;WORD wDay;WORD wHour;WORD wMinute;WORD wSecond;WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
#include <iostream>
#include <Windows.h>using namespace std;int main()
{SYSTEMTIME st = { 0 };GetLocalTime(&st);char location_now[20];sprintf_s(location_now, "%d-%02d-%02d %02d:%02d:%02d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);cout << "time now: " << location_now << endl;return 0;
}

四、CTime

看一下CTime::GetCurrentTime()的定义:

#include <iostream>
#include<atltime.h>using namespace std;int main()
{CTime time_now = CTime::GetCurrentTime();//打印日期和时间CString date = time_now.Format(_T("%Y/%m/%d"));//打印时间CString time = time_now.Format(_T("%X"));wcout << date.GetString() << "   " << time.GetString() << endl;return 0;
}

windows上获取系统时间相关推荐

  1. windows平台获取系统时间

    1.方法1 1.1 示例代码 #include <time.h> #include <stdio.h>int main() {//获取系统时间,精确到秒struct tm sy ...

  2. 获取系统时间出错oracle-,oracle 获取系统时间(转)

    Oracle中如何获取系统当前时间 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; ORACLE里获取一个时间的年.季.月.周.日 ...

  3. 笔记1:VC获取系统时间的方法

    笔记1:VC 获取系统时间的方法 推荐的获取方法 获取时间方法种类 各种获取时间方法详解 方法1:time_t变量 和 time(time_t*)方法 方法2:system(" time&q ...

  4. 获取系统时间GetSystemTime、GetLocalTime、GetTickTime

    在说时间之前先说一个经常要用的时间结构体,Linux中与windows一样 SYSTEMTIME 结构体 typedef struct _SYSTEMTIME {WORD wYear;WORD wMo ...

  5. c 获取当前时间插入oracle数据库,Oracle如何获取系统当前时间等操作实例,c++获取系统时间...

    Oracle如何获取系统当前时间等操作实例,c++获取系统时间 获取系统当前时间 date类型的 select sysdate from dual; char类型的 select to_char(sy ...

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

    1.使用CTime类(获取系统当前时间,精确到秒) ? 1 2 3 4 5 6 CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime();/ ...

  7. c++ 如何获取系统时间

    DoubleSnake   转载http://blog.csdn.net/zjnig711/article/details/2419081 c++ 如何获取系统时间 2008-04-28 15:34 ...

  8. linux获得系统时间 c,linux c 获取系统时间

    #include main() { time_t timep; time (&timep); printf("%s",asctime(gmtime(&timep)) ...

  9. java 线程不足_jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储...

    jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程. 我想获得该子进程的线程/堆转储. 在Uni ...

最新文章

  1. cv2.calcOpticalFlowFarneback integer argument expected, got float
  2. 倒水问题(Java)
  3. FFmpeg中的日志以及avio实现对文件的读写功能
  4. 用Python实现快速排序
  5. 温习下C语言一些函数
  6. ccs4c语言用户手册,CCS v4.x快速入门:EasyDsp开发套件产品手册
  7. MTK模拟器编译使用
  8. 惠普局域网共享打印机设置_已解决: hp1106局域网共享打印机共享 - 惠普支持社区 - 817337...
  9. 华为HCIE云计算培训笔记第一天
  10. catia中的螺旋伞齿轮画法_CATIA齿轮绘制方法
  11. 电脑C盘满了如何扩充C盘内存?
  12. 计算机科学技术的广告语,让人动心的十大经典IT广告语
  13. 【逆向入门】 CrackMe160-005 分析思路
  14. echarts的x轴自动动态刷新
  15. 基于物理的渲染PBR(二):挑战手写pbr和IBL环境光部分的见解
  16. 《第一堂棒球课》:走进棒球运动
  17. GPIO之推挽输出和开漏输出
  18. access中,客户端和服务器端链接数据库的详细代码
  19. Linux JKD1.8 安装及配置
  20. 深度学习GPU选购指南

热门文章

  1. 50 条有趣的 Python 一行代码
  2. 《Microduino实战》——3.4 重新认识软件与硬件
  3. android XML文件加注释
  4. MATLAB根据经纬度格网数据画地图
  5. 计算机网教答辩,计算机论文答辩老师一般问些什么问题?需要怎么回答?
  6. R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
  7. stm32开发3D打印机(零)——打印板配置(未完成)
  8. windows_关闭windows休眠功能
  9. Tableau Fixed和include区别
  10. Object类型数据转为int型数据