• 计算机中的时间处理


    计算机中的时间处理

    统一概念

    首先先理解一些通用的概念。

    标准时间

    • UTC(Universal Time Coordinated),即协调世界时。全世界统一的世界标准时间。需要不规则地加入闰秒。
    • GMT(Greenwich Mean Tim),格林尼治平均时间。
      • 一般认为UTC和GMT是相等的,但是会存在0.9秒以内的误差,这是由于地球不规则自转引起的。

    时区

    • 本地时间,UTC+时区。东为正西为负。比如北京时间在东八区就是 UTC+(+0800)。
    • DST,夏令时。是指夏天太阳升起比较早,将时钟拨快一个小时来提早日光的使用。欧美主要国家都引用了这个做法。如果在夏令时时区内 DST=UTC+时区+1。

    时间戳

    • Unix时间(戳),表示当前时间到1970年1月1日00:00:00 UTC对应的秒数
    • 时间戳,示当前时间到1970年1月1日00:00:00 UTC对应的毫秒数

    字符串表示

    为了让时间易于阅读又出现了用各种字符串来表示时间的方法。

    RFC2822

    YYYY/MM/DD HH:MM:SS ± timezone(时区用4位数字表示)
    // eg 1992/02/12 12:23:22+0800
    

    ISO 8601

    YYYY-MM-DDThh:mm:ss ± timezone(时区用HH:MM表示)
    
    1997-07-16T08:20:30Z
    // “Z”表示UTC标准时区,即"00:00",所以这里表示零时区的`1997年7月16日08时20分30秒`
    
    //转换成位于东八区的北京时间则为`1997年7月17日16时20分30秒`
    1997-07-16T19:20:30+01:00
    
    // 表示东一区的1997年7月16日19时20秒30分,转换成UTC标准时间的话是1997-07-16T18:20:30Z
    

    Python中的时间处理 - Arrow

    因为原生库对于时间的处理过于复杂,这里用了arrow。

    快速上手

    >>> import arrow 
    
    # 获得标准时
    >>> utc = arrow.utcnow()
    >>> utc 
    <Arrow [2018-11-13T13:34:28.469607+00:00]>
    
    # 时区转换
    >>> local = utc.to("Asia/Shanghai")
    <Arrow [2018-11-13T21:36:41.001464+08:00]>
    
    # 比较
    >>> utc > utc.shift(hour=-1)
    True
    
    # 字符串转换
    >>> arrow.get('2013-05-11T21:23:58.970460+00:00')
    <Arrow [2013-05-11T21:23:58.970460+00:00]>
    
    # 格式化输出
    >>> local.format('YYYY-MM-DD HH:mm:ss ZZ')
    '2018-11-13 21:36:41 +08:00'
    
    # 可读性
    >>> local.humanize()
    'an hour ago'
    >>> local.humanize(locale='zh')
    '1小时前'
    
    # 时间戳
    >>> utc.timestamp
    1542116201
    

    JavaScript

    JavaScript 时间与日期处理实战

    参考

    Arrow文档

  • 相关阅读:
    Execution Contexts (执行上下文)
    OOP—ECMAScript实现详解
    requireJS入门
    SqlServer 傲娇的表变量
    CSharp进阶 引用类型引发的血案
    CSharp进阶 都是请求惹的祸
    z-index问题
    js中事件(自定义事件)
    做了个后末日朋克风的梦
    昨晚的梦
  • 原文地址:https://www.cnblogs.com/nevermoes/p/9955807.html
Copyright © 2020-2023  润新知