SYSTEMTIME、FILEITIME、LOCLTIME、UTC、QDateTime等各种时间

1.UTC:世界协调时间

2.LOcalTime:本地时间,也就是系统设置时区的当前时间;

3.SYSTEMTIME:格林威治时间,由本地时间减去时区即可,与localtime都是用SYSTEMTIME结构体存储;

4.FileTime:基于UTC,是一个64 bit的值,记录由1609-01-01 00:00:00到现在的秒数,精确到纳秒;

5.time_t时间戳:一个64 bit的值,记录离1970-01-01 00:00:00到现在的秒数;

6.QDateTime是QT中QDate和QTime的结合,提供了一系列的处理函数。

几个用到的函数:

1.  FileTime转换成SYSTEMTIME:BOOL FileTimeToSystemTime(const FILETIME  *lpFileTime, LPSYSTEMTIME lpSystemTime);

FILETIME filetime;

SYSTEMTIME systime;

FileTimeToSystemTime(&filetime, &systime);

注:两个&一定要加,第一个是取地址,第二个暂时不知道为什么,但是不加会报无法从SYSTEMTIME转换成LPSYSTEMTIME;

2.FILETIME转换成time_t,利用中间变量ULARGE_INTEGER

FILETIME  filetime;

ULARGE_INTEGER ull;
 ull.LowPart =filetime.dwLowDateTime;
 ull.HighPart = filetime.dwHighDateTime;
 time_t Time_create= ull.QuadPart / 10000000ULL - 11644473600ULL;

3.SYSTEME转换成string形式,由于没有直接的转换函数,可以借助QDateTime;FILETIME转换成string形式,要先转换成SYSTEME。

SYSTEMTIME dircreatetime;
  FILETIME filetime;
  EXPECT_TRUE(FileTimeToSystemTime(&filetime,&dircreatetime));
  QDateTime qdatetime;
  qdatetime.setDate(QDate(dircreatetime.wYear, dircreatetime.wMonth, dircreatetime.wDay));
  qdatetime.setTime(QTime(dircreatetime.wHour, dircreatetime.wMinute, dircreatetime.wSecond));
  QString format = "yyyy-MM-dd hh:mm:ss";
  QString str_time=qdatetime.toString(format);

时间: 2024-07-29 23:04:18

SYSTEMTIME、FILEITIME、LOCLTIME、UTC、QDateTime等各种时间的相关文章

Linux UTC时间与本地时间

因为维护的机器有欧洲,有越南,有泰国,有北美,有台湾,有大陆的机器. 但有个脚本需要告警, 告警的时间都要统一为大陆的时间. UTC时间与本地时间 UTC + 时区差 = 本地时间 时区差东为正,西为负.在此,把东八区时区差记为 +0800 UTC + (+0800) = 本地(北京)时间 统一时间, 将时间都转换为UTC,之后加8小时. date -u -d"+8 hour" now=`date -u -d"+8 hour" +'%Y-%m-%d %H:%M:%S

关于时区的时间的详解,比如UTC\GMT等

UTC 和 GMT 及 北京时间的关系 UTC和GMT,这两者几乎是同一概念.它们都是指的格林尼治标准时间,只不过UTC的称呼更为正式一点.两者的区别在于前者是一个天文 上的概念,而 后者是基于一个原子钟.在UTC中,每一年或两年会有一个“闰秒”,而我们一般不理 会这个“闰秒”,但是在Java中,这造成我们有时会出现60秒或61秒. GMT=UTC     UTC+8=北京时间 全球时区 整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信场合,为了统一起见,使用一个统一的时间,

关于UTC时间和本地时间

收藏了个类Publics  可以实现本地时间和UTC时间的转换 UCT时间=本地时间-8    本地时间比UTC时间快8小时 element-ui的日期选择器上  选择的时间显示的是本地时间   但实际值是UTC时间传到后端 这时候 时间的类型是UTC时间 在实体中  要调用转成UTC时间的方法(自动计算时差) 从实体中获取数据的时候  时间是datetime格式   所以 调用 时间刻度不变  把时间类型转成UTC时间 这时候时间的类型是UTC类型了   但时间的值还是从数据库中取出来的值 

几个时间:UTC、GMT、本地时间、Unix时间戳

UTC(Coordinated Universal Time)时间:协调世界时,即世界标准时间 GMT(Greenwich Mean Time):格林威治/格林尼治时间 GMT=UTC,均使用秒数来计算. UTC+时区差=本地时间. 时区差东为正,西为负. Unix时间戳:计算机中看到的UTC时间都是从(1980年01月01日 0:00:00)开始计算秒数,所看到的UTC时间就是从1970年零点到具体时间共有多少秒,这个秒数就是Unix时间戳. 原文地址:https://www.cnblogs.

认识GMT和UTC时间-附带地理知识

GMT-格林尼治标准时 GMT 的全名是格林威治标准时间或格林威治平时 (Greenwich Mean Time),这个时间系统的概念在 1884 年确立,由英国伦敦的格林威治皇家天文台计算并维护,并在往后的几十年往欧陆其他国家扩散.在 1924 年开始,格林威治天文台每小时就会向全世界播报时间. 在刚开始的几十年,GMT 的测量方法非常简单:观测者随时监控太阳在天空的位置,并且把每天太阳爬升到仰角最高的时候记录下来,这个时间点称呼为“过中天”.一般人对于一天 24 小时的理解,大致上就相等于两

DateTime.UtcNow 协调通用时间(UTC)

1.协调通用时间(UTC) 2.本地时间和UTC时间相互转化 DateTime localDateTime = DateTime.Now;//本地时间 DateTime utcDateTime = DateTime.UtcNow;//协调世界时 DateTime temp1 = DateTime.SpecifyKind(localDateTime, DateTimeKind.Utc);//本地时间转成UTC时间 DateTime temp2 = DateTime.SpecifyKind(utcD

UTC和GMT时间

来源:https://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html UTC和GMT时间 每个地区都有自己的本地时间,在网上以及无线电通信中时间转换的问题就显得格外突出.我自己就经常混淆于此,特地研究了一下,记录在此以备忘. 整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated).UTC与格林尼治平均

Qt设置系统时间(使用SetSystemTime API函数)

大家都知道Qt中有QDateTime等有关时间与日期的类,类中包含很多成员函数,可以很方便的实现有关时间与日期的操作,比如:想要获得系统当前的时间与日期,可以调用currentDateTime(); 但是Qt并没有提供设置系统时间的方法,这样我们只能自己来区分平台,调用平台相关的API,这篇文章实现在Windows下的设置. 常用的与时间有关的Win32 API有两个:GetSystemTime();  与  SetSystemTime();  下面是函数原型: VOID GetSystemTi

年月日时间和64位时间的使用及相互转换

通常在我们的程序中,需要使用到年月日类型的时间,也需要使用64位整型的时间,比如存储到数据库中(数据库中对应的时间字段的类型则为big int数据类型).代码中会涉及到如何获取当前时间,以及年月日时间和64位时间之间的转换问题.下面就自己遇到的实际情况,做一个小的总结. 1.获取当前时间 获取当前时间的时间有多种,下面说说使用time函数,使用CTime类和使用SYSTEMTIME结构体这三种常见的获取当前时间的方法. (1)使用time函数获取当前时间 使用该函数的时候应该包含time.h头文