python时间操作总结

Unix时间戳

Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。

目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时间戳最多可以使用到格林威治时间2038年01月19日03时14分07秒(二进制:01111111 11111111 11111111 11111111)。其后一秒,二进制数字会变为10000000 00000000 00000000 00000000,发生溢出错误,造成系统将时间误解为1901年12月13日20时45分52秒。这很可能会引起软件故障,甚至是系统瘫痪。使用64位二进制数字表示时间的系统(最多可以使用到格林威治时间292,277,026,596年12月04日15时30分08秒)则基本不会遇到这类溢出问题。

python中时间戳的使用

import time
import datetime

#获取当前时间戳
time.time()
#返回时间戳1470733760.613

#获取localtime
time.localtime()
#time.struct_time(tm_year=2016, tm_mon=8, tm_mday=9, tm_hour=17, tm_min=11, tm_sec=13, tm_wday=1, tm_yday=222, tm_isdst=0)

#上面的时间格式不好看,定义一个时间格式
ISOTIMEFORMAT='%Y-%m-%d %X'
#使用strftime做转换
a = time.strftime( ISOTIMEFORMAT, time.localtime() )
#返回'2016-08-09 17:15:27'

#将'2016-08-09 17:15:27'转化为时间戳
time.mktime(time.strptime(a,ISOTIMEFORMAT))
#1470734127.0

#将时间戳转化为localtime
b = time.localtime(1470734127.0)
time.strftime(ISOTIMEFORMAT, b)

#获取当前时间的前三天的时间戳
time.mktime((datetime.datetime.now() - datetime.timedelta(days = 3)).timetuple())

#获取今日的零点时间戳
now = time.time()
c = now - (now % 86400) + time.timezone

#获取当前日期
date = datetime.datetime.now().strftime("%Y-%m-%d")
#获取当前时间的前n天
date_n = (datetime.datetime.now()-datetime.timedelta(days=n)).strftime("%Y-%m-%d")
posted @ 2016-08-09 17:28  zoro_robin  Views(762)  Comments(0Edit  收藏  举报