windows上获取系统时间
一、 通过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上获取系统时间相关推荐
- windows平台获取系统时间
1.方法1 1.1 示例代码 #include <time.h> #include <stdio.h>int main() {//获取系统时间,精确到秒struct tm sy ...
- 获取系统时间出错oracle-,oracle 获取系统时间(转)
Oracle中如何获取系统当前时间 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; ORACLE里获取一个时间的年.季.月.周.日 ...
- 笔记1:VC获取系统时间的方法
笔记1:VC 获取系统时间的方法 推荐的获取方法 获取时间方法种类 各种获取时间方法详解 方法1:time_t变量 和 time(time_t*)方法 方法2:system(" time&q ...
- 获取系统时间GetSystemTime、GetLocalTime、GetTickTime
在说时间之前先说一个经常要用的时间结构体,Linux中与windows一样 SYSTEMTIME 结构体 typedef struct _SYSTEMTIME {WORD wYear;WORD wMo ...
- c 获取当前时间插入oracle数据库,Oracle如何获取系统当前时间等操作实例,c++获取系统时间...
Oracle如何获取系统当前时间等操作实例,c++获取系统时间 获取系统当前时间 date类型的 select sysdate from dual; char类型的 select to_char(sy ...
- VC++ 获取系统时间的方法汇总
1.使用CTime类(获取系统当前时间,精确到秒) ? 1 2 3 4 5 6 CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime();/ ...
- c++ 如何获取系统时间
DoubleSnake 转载http://blog.csdn.net/zjnig711/article/details/2419081 c++ 如何获取系统时间 2008-04-28 15:34 ...
- linux获得系统时间 c,linux c 获取系统时间
#include main() { time_t timep; time (&timep); printf("%s",asctime(gmtime(&timep)) ...
- java 线程不足_jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储...
jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程. 我想获得该子进程的线程/堆转储. 在Uni ...
最新文章
- cv2.calcOpticalFlowFarneback integer argument expected, got float
- 倒水问题(Java)
- FFmpeg中的日志以及avio实现对文件的读写功能
- 用Python实现快速排序
- 温习下C语言一些函数
- ccs4c语言用户手册,CCS v4.x快速入门:EasyDsp开发套件产品手册
- MTK模拟器编译使用
- 惠普局域网共享打印机设置_已解决: hp1106局域网共享打印机共享 - 惠普支持社区 - 817337...
- 华为HCIE云计算培训笔记第一天
- catia中的螺旋伞齿轮画法_CATIA齿轮绘制方法
- 电脑C盘满了如何扩充C盘内存?
- 计算机科学技术的广告语,让人动心的十大经典IT广告语
- 【逆向入门】 CrackMe160-005 分析思路
- echarts的x轴自动动态刷新
- 基于物理的渲染PBR(二):挑战手写pbr和IBL环境光部分的见解
- 《第一堂棒球课》:走进棒球运动
- GPIO之推挽输出和开漏输出
- access中,客户端和服务器端链接数据库的详细代码
- Linux JKD1.8 安装及配置
- 深度学习GPU选购指南