Windows的本地时间(LocalTime)、系统时间(SystemTime)、格林威治时间(UTC-Time)、文件时间(FileTime)之间的转换
首先,先从简单的说起,本地时间(LocalTime),也就是系统设置时区的当前时间!比如说当前系统设置的时区为“(UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐”(东八区),系统的右下角通知区域显示的时间为“2012/5/18 16:57”,那么这个时间就是当前系统的本地时间!
要说清楚什么是系统时间(SystemTime)之前先来了解一下格林威治时间。本初子午线被定义为通过格林威治经线的位置,相对这条经线的时区向东递增,向西递减,每隔一个时区,相差一个小时。那么,上面例子中的东八区的时间就是相对于格林威治时间加上了八个小时!而Windows的系统时间是就是格林威治时间!知道了这一点,本地时间与系统时间之间的转换也就很容易了。将上面的本地时间“2012/5/18 16:57”转换到系统时间只要减去八个小时就行了!转换结果为“2012/5/18 8:57”。
本地时间与系统时间的都是用SYSTEMTIME结构来存储的,关于这个结构参见MSDN。
文件时间(FileTime)的存储方式则与本地时间、系统时间有些不同,它使用64位的数据长度存储。引用MSDN上面的一句原话“A file time is a 64-bit value that represents the number of 100-nanosecond intervals that have elapsed since 12:00 A.M. January 1, 1601 Coordinated Universal Time (UTC).”这个64位的值记录了自1601年1月1日0点以来的以100纳秒(ns)为单位的格林威治时间间隔,注意,是纳秒,不是毫秒!将这个数据转换为秒的话要除以10^7(1秒 = 10^9纳秒,这里是100纳秒单位)!了解了上面的格林威治时间,理解这个很容易!
本地时间与系统时间之间的转换上面已经说了,这其中的转换因子就是当前系统的时区,也可以通过SystemTimeToTzSpecificLocalTime、TzSpecificLocalTimeToSystemTime两个函数来完成,这两个函数在转换时都要指定时区信息,具体用法参考MSDN。下面谈谈系统时间与文件时间、本地时间与文件时间之间的转换。因为用到文件时间的地方不仅仅限于记录文件的创建、修改时间。而且还可以通过文件时间的转换函数来完成系统时间与本地时间的转换!
1. 系统时间与文件时间的转换:SystemTimeToFileTime、FileTimeToSystemTime
2. 本地时间与文件时间的转换:LocalFileTimeToFileTime、FileTimeToLocalFileTime
从上面可以看出,本地时间与系统时间的转换也可以通过文件时间来完成。这里需要注意一点的是,本地时间和文件时间都是对于当前系统的时区而言的,这样会出现同一个文件放到不同时区的系统中时,文件的创建时间,修改时间等等都会不一样。因为文件创建时间,修改时间等都是以文件时间方式记录的,操作系统在将文件时间转换为本地时间时要根据系统当前的时区作为参考。所以,在系统时间与本地时间之间转换时最好的方式是采用文件时间函数,这样时区的问题会由操作系统解决。此外,还有一些函数使用的数据结构中也用到了文件时间,比如用于检索系统定时信息的GetSystemTimes的参数、查询系统时间信息时用到的NtQuerySystemInformation中的SYSTEM_TIME_INFORMATION结构,都是给出的文件时间!知道了这一点,将它们转换为本地时间就很容易了。
Windows的本地时间(LocalTime)、系统时间(SystemTime)、格林威治时间(UTC-Time)、文件时间(FileTime)之间的转换的更多相关文章
- Linux 文件时间记录属性 调优
Linux 文件时间属性介绍 atime:(access time)显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用.(执行一些可执行文件或脚本) mtime: ...
- IO系统-标准C的I/O和文件I/O
1.标准C的I/O 1.1常用函数和结构体 char *fgets(char *s, int size, FILE *stream); //整行输入 int printf(const char *fo ...
- ubuntu下的时间设定(硬件时间,系统时间,本地时间)
问题的来由是在这里: 在cron里设定任务是在凌晨6点执行,检查日志时发现时间总是不对,是在22点左右的时间执行的.研究发现,任务是在本地时间的6点执行了,但不知为什么syslog中的时间都是为utc ...
- BIOS时间与系统时间(windows/linux时间同步问题)
写作动机 双系统是不少人喜欢的方式,但安装双系统之后一般会出现两个系统时间不一样的问题,刚开始用双系统的时候也没怎么在意,就是装上后在网上找找相关解决方法,复制粘贴代码完事儿.但是次数多了就有点烦了, ...
- Linux的硬件时间、校正Linux系统时间及系统时间调用流程
第一部分: 一)概述: 事实上在Linux中有两个时钟系统,分别是系统时间和硬件时间 UTC是协调世界时(Universal Time Coordinated)英文缩写,它比北京时间早8个小时. ...
- linux 系统文件类型、系统安装时间、系统启动时间、系统运行时间、设置及显示时间、系统时间和硬件时间
系统文件类型: 1) $mout 2) df -l:仅列出本地文件系统:-h (--human-readable):-T:文件系统类型 $df -lhf 3) file -s (--special-f ...
- win10 + Ubuntu 双系统,重装后的引导修复,时间调整和启动项调整
▶ 原先为 win10 + Ubuntu 双系统,使用 grub2 作引导,在重装了 win10 (大作死升到了1803)后系统重写了引导,启动项里找不到 Ubuntu,需要修复. ● 参考[http ...
- Linux修改日期、时间,系统与硬件时间
Linux的时间分为两种,硬件时间和系统时间两种: 一.查看与修改系统时间 查看系统时间:date # date Fri Nov 26 15:20:18 CST 1999 用指定的格式显示系统时间: ...
- IIS7日志中时间与系统时间不一致的原因
最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日 ...
随机推荐
- web开发中的一些不常见的概念
1.惊群 [活跃]星际争霸小王子 就是当你在车站时,一堆拉客的人一拥而上,想你坐他的车,于是就惊群了.但你只能坐一个车,所以没拉到你的就悻悻而归,于是return false[活跃]星际争霸小王 2 ...
- Spring Boot框架 - 数据访问 - JDBC&自动配置
一.新建Spring Boot 工程 特殊勾选数据库相关两个依赖 Mysql Driver — 数据库驱动 Spring Data JDBC 二.配置文件application.properties ...
- JAVA基础学习(2)之判断
2判断 2.1比较 2.1.1比较 System.out.println(amount>=10);输出的值为true或false 2.1.2关系运算 优先级 <算术运算 >赋值运算 ...
- php虚拟主机下实现定时任务(仅供参考)
因为要做简单的中控 在实现心跳包的时候遇到了困难 正常的心跳包思路是这样的 举个例子 我写一个登陆签到脚本 当我登陆成功的时候 会把登陆成功这个状态传递给网络上的中控端 当我签到完成的时候会把 ...
- 页面布局 Paddiing Row Column Expanded 组件详解
一.Paddiing 组件 padding EdgeInsetss 设置填充的值 child 组件 return Padding( padding: EdgeIn ...
- 关注Ionic底部导航按钮tabs在android情况下浮在上面的处理
Ionic是一款流行的移动端开发框架,但是刚入门的同学会发现,Ionic在IOS和android的底部tabs显示不一样.在安卓情况下底部tabs会浮上去. 如下图展示: 网上也有很多此类的解决方案 ...
- 聊聊面试中常问的GC机制
GC 中文直译垃圾回收,是一种回收内存空间避免内存泄漏的机制.当 JVM 内存紧张,通过执行 GC 有效回收内存,转而分配给新对象从而实现内存的再利用. JVM GC 机制虽然无需开发主动参与,减轻不 ...
- 校准产品质量,把控出海航向,腾讯WeTest《2019中国移动游戏质量白皮书》正式开放预约
作者:wetest小编 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:https://wetest.qq.com/lab/view/483.html 每当步入一个新的年份, ...
- Plastic Bottle Manufacturer - Different Cosmetic Plastic Bottle Materials, Different Characteristics
Plastic bottles are usually made of PP, PE, K, AS, abs, acrylic, PET, and the like. Dust caps for th ...
- C:gcc的基本使用
分布编译 预处理:gcc -E hello.c -o hello.i 编 译:gcc -S hello.i -o hello.s 汇 编:gcc -c hello.s -o hello.o 链 接:g ...