zoukankan      html  css  js  c++  java
  • 时间戳

    时间戳和日期相互转化

    一. time模块

    time模块里是一些函数

    1.1 时间戳

    每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示

    1. time.time() 获取当前时间戳
    import time # 引入time模块
    ticks = time.time()
    print "当前时间戳为:", ticks
    

    输出结果为:

    当前时间戳为: 1532159373.01
    
    

    1.2 时间间隔

    • 时间间隔是以秒为单位的浮点小数

    1.3 格式化时间

    上述时间戳对人来说是不友好的,所以有时候需要转换为一定的格式方便人理解。我们可以调用 time.strftime() 函数来达到这个目的(string format time),即字符串格式的时间

    • 这个方法需要两个参数,其中第一个是时间格式,第二个是一个9元组.第二个参数可选,默认为 time.localtime() 的返回值。而那个9元组其实是 struct_time,由9个元素组成的元组(tuple),也是一种时间表示的格式。
    • 其中,九元祖的后三个分别是:weekday(0-6),在一年中的第几天(1-366),是否是夏令时(默认-1)

    如下是把时间戳转换为当前时间

    • time.time(),time.localtime(ticks),time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
    import time # 引入time模块
    
    ticks = time.time()
    print "当前时间戳为:", ticks
    timeArray = time.localtime(ticks)
    print timeArray
    otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
    print otherStyleTime
    
    

    输出结果为:

    当前时间戳为: 1532161766.65
    time.struct_time(tm_year=2018, tm_mon=7, tm_mday=21, tm_hour=16, tm_min=29, tm_sec=26, tm_wday=5, tm_yday=202, tm_isdst=0)
    2018--07--21 16:29:26
    
    

    日期转为时间戳

    time.strptime(tss1, "%Y-%m-%d %H:%M:%S"),int(time.mktime(timeArray))

    import time # 引入time模块
    tss1 = '2013-10-10 23:40:00'
    # 转为时间数组
    timeArray = time.strptime(tss1, "%Y-%m-%d %H:%M:%S")
    # timeArray可以调用tm_year等
    print timeArray
    # 转为时间戳
    timeStamp = int(time.mktime(timeArray))
    print timeStamp  
    

    输出结果:

    time.struct_time(tm_year=2013, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=0, tm_wday=3, tm_yday=283, tm_isdst=-1)
    1381419600
    

    1.4 时间数组

    time.strftime(format[, t])格式化日期

    • 该函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
    • format -- 格式字符串。
    • t -- 可选的参数t是一个struct_time对象。

    说明:

    • %y 两位数的年份表示(00-99)
    • %Y 四位数的年份表示(000-9999)
    • %m 月份(01-12)
    • %d 月内中的一天(0-31)
    • %H 24小时制小时数(0-23)
    • %I 12小时制小时数(01-12)
    • %M 分钟数(00=59)
    • %S 秒(00-59)
    • %a 本地简化星期名称
    • %A 本地完整星期名称
    • %b 本地简化的月份名称
    • %B 本地完整的月份名称
    • %c 本地相应的日期表示和时间表示
    • %j 年内的一天(001-366)
    • %p 本地A.M.或P.M.的等价符
    • %U 一年中的星期数(00-53)星期天为星期的开始
    • %w 星期(0-6),星期天为星期的开始
    • %W 一年中的星期数(00-53)星期一为星期的开始
    • %x 本地相应的日期表示
    • %X 本地相应的时间表示
    • %Z 当前时区的名称

    1.5 时间元祖

    • time.strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
    • struct_time元组,用一个元组装起来的9组数字处理时间

    二. datetime模块

    datetime模块定义了下面这几个类:

    • datetime.date:表示日期的类。常用的属性有year, month, day;
    • datetime.time:表示时间的类。常用的属性有hour, minute,
    • second, microsecond;
    • datetime.datetime:表示日期时间。
    • datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
    • datetime.tzinfo:与时区有关的相关信息。

    python中处理的事件类型

    1. 时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的,如:1382678303.098
    2. 以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同

    如:time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=21, tm_sec=33, tm_wday=4, tm_yday=298, tm_isdst=0)

    • tm_wday:(0-6, Monday is 0)
    • tm_yday:(day in the year, 1-366)
    • tm_isdst:(-1, 0 or 1) 0:普通 1:DST夏令时比正常的早一个小时 -1:根据当前时区

    time和datetime模块区别

    1. time模块

    import time
    print time.time()#获得当前时间的时间戳
    print time.clock()#第一次运行获得当前时间的时间戳,第二次运行就是间隔上一次运行的时间间隔
    print time.mktime
    
    

    输出结果为:

    1532165477.73
    0.025028
    1384139471.0
    

    2. datetime模块

    from datetime import *
    print date.today()#获取今天的日期
    print datetime.today()#获取今天的日期和时间
    print datetime.now()#获取当前的日期和时间
    

    输出结果为:

    2018-07-21
    2018-07-21 17:29:02.904651
    2018-07-21 17:29:02.904675
    
    

    ps: 字符串不能直接转换为时间戳,需要先转为struct_time

    2.1 处理一些特殊的情况,比如需要设定某个时间的间距的时候,用到datetime的datetime.timedelta类。

    小结

    昨天无意中被旁边妹子问到时间戳相关问题,鉴于没详细了解过,就写出来整理一下。

    链接:

  • 相关阅读:
    【Android游戏开发之八】游戏中添加音频详解MediaPlayer与SoundPool的利弊以及各个在游戏中的用途!
    【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!
    【Android游戏开发之七】(游戏开发中需要的样式)再次剖析游戏开发中对SurfaceView中添加组件方案!
    前端要给力之:URL应该有多长?
    【Android游戏开发之三】剖析 SurfaceView ! Callback以及SurfaceHolder!!
    charactersFound方法中的陷阱
    前端要给力之:分解对象构造过程new()
    结合UIImageView实现图片的移动和缩放
    【Android游戏开发之一】设置全屏以及绘画简单的图形
    扩展BaseAdapter实现在ListView中浏览文件
  • 原文地址:https://www.cnblogs.com/monkey-moon/p/9347369.html
Copyright © 2011-2022 走看看