zoukankan      html  css  js  c++  java
  • 关于时区

    • GMT:格林尼治平时(Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。(参考维基百科
    • UTC:协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“TempsUniversel Cordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治平时。(参考维基百科
    • DST:夏时制,又称日光节约时制、日光节约时間(英语:Daylight saving time)或夏令时间(英语:Summer time),是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。(参考维基百科)。简单说来,夏时制就是在当地时间的基础上,在夏季时间段内将时钟调快一小时,过后再调慢一小时。
    • 通过函数GetTimeZoneInformation获取系统时区信息。
    • 通过函数SetTimeZoneInformation设置系统时区。
    • 两个函数都涉及TIME_ZONE_INFORMATION结构体:
       1     typedef struct _TIME_ZONE_INFORMATION { 
       2         LONG Bias; //分钟为单位
       3         WCHAR StandardName[32]; 
       4         SYSTEMTIME StandardDate; //标准时日期,即为调整为标准时的日期
       5         LONG StandardBias; //通常为0
       6         WCHAR DaylightName[32]; 
       7         SYSTEMTIME DaylightDate;//夏制时日期 ,即为调整为夏制时的日期
       8         LONG DaylightBias; //分钟为单位
       9 
      10     } TIME_ZONE_INFORMATION; 
    • 通过SetTimeZoneInformation修改本地时间:
      • SetTimeZoneInformation只会影响系统时间(GetSystemTime),不会影响本地实时间(GetLocalTime
      • WinCE无SystemTimeToTzSpecificLocalTime函数,只能自己实现(两种方法):
        • 通过system time和时区信息计算local time,比较麻烦
        • 通过file time间接实现,代码:
           1 BOOL SystemTimeToLocalTime(const SYSTEMTIME *pSt,SYSTEMTIME *pLt)
           2 {
           3     if (!pSt || !pLt)
           4     {
           5         return FALSE;
           6     }    
           7 
           8     FILETIME ft,lft;
           9     BOOL b = SystemTimeToFileTime(pSt,&ft);
          10     if (!b) return b;
          11 
          12     b = FileTimeToLocalFileTime(&ft,&lft);//文件时间--->本地文件时间,使用了时区信息
          13     if (!b) return b;
          14 
          15     return FileTimeToSystemTime(&lft,pLt);
          16 }
  • 相关阅读:
    C语言与内存模型初探
    【编辑中】软件工程知识萃取
    【深入理解计算机系统01】不同层级程序指令间的转换
    【统计学中的普适智慧】假设检验
    windows 内部预览版与迅雷极速版不配合
    网络安全理论初涉
    Unix philosophy
    BOP 2016 复赛题目
    10.8做题——USACO1.2命名那个数字(Name That Number)
    10.6上课——problem1切割木板(USACO 2006 November Gold)
  • 原文地址:https://www.cnblogs.com/dahai/p/2644375.html
Copyright © 2011-2022 走看看