zoukankan      html  css  js  c++  java
  • unix时间戳和localtime

    今天看代码的时候看到这么一段

        void user::setHelpday()
        {
            int  time = ::getTickCount();
            m_helpday = (time +(8 * 3600))/(3600 * 24);
        }

    大致是保存一下当前是第几天,用于区分不同天,但是对立面的+8*3600不太理解

    time_t cur = 0;
    struct tm *timeinfo = localtime(&cur);
    printf("%d,%d ",timeinfo->tm_hour,timeinfo->tm_yday);

    打印出来是 8,0

    全世界在同一时间的time(0)返回的时间戳是一致的,都是

    是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
    UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z.
     
     
    但是同一个时间戳在不同时区所对应的当地小时是不一样的。!就像时间戳0在中国就是8点
     
    回到上面那个问题,

    时区差东为正,西为负。在此,把东八区时区差记为 +0800,

    UTC + (+0800) = 本地(北京)时间 (1)

    所以要计算是第几天必须把时间戳+8*3600 再除24*3600才是对的。

     
  • 相关阅读:
    Two Sum
    Longest Common String
    Maximum Subarray
    Copy List with Random Pointer
    Convert Binary Search Tree to Doubly Linked List
    Fast Power
    Centos7安装ELK Cyrus
    IPv6实验 OSPFv3
    IPv6笔记和实验 RIPng
    IPv6 ICMPv6笔记
  • 原文地址:https://www.cnblogs.com/vanishfan/p/3252959.html
Copyright © 2011-2022 走看看