码迷,mamicode.com
首页 > 其他好文 > 详细

时间戳

时间:2018-07-21 18:06:28      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:区别   1.5   日期时间   The   format   格式   timestamp   cloc   python   

时间戳和日期相互转化

一. 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类。

小结

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

链接:

时间戳

标签:区别   1.5   日期时间   The   format   格式   timestamp   cloc   python   

原文地址:https://www.cnblogs.com/monkey-moon/p/9347369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!