关于时间戳

时间戳定义

时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。

根据精度的不同,分为 10 位(秒级),13 位(毫秒级),16 位(微妙级)和 19 位(纳秒级)。最常用的为13位和10位,python里一般默认为10位。

获取现在的Unix时间戳

import time
print(time.time())
# 1647736855.316063(单位为秒)

Unix时间戳 → 普通时间

import time
local_time=time.gmtime(1647736855.316063)
# time.struct_time(tm_year=2022, tm_mon=3, tm_mday=20, tm_hour=0, tm_min=40, tm_sec=55, tm_wday=6, tm_yday=79, tm_isdst=0)
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time))
# 2022-03-20 00:40:55

13位毫秒级时间时:

import time
def timeStamp(timeNum):
    timeStamp = float(timeNum/1000)
    timeArray = time.localtime(timeStamp)
    otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
    print(otherStyleTime)

timeStamp(1647736855100)
# 2022-03-20 08:40:55

普通时间 → Unix时间戳

import time
print(int(time.mktime(time.strptime('2022-03-20 00:40:55', '%Y-%m-%d %H:%M:%S'))))
# 1647708055

13位毫秒级时间时:

import time
from datetime import datetime
timestr = '2022-03-20 8:59:18.123'
datetime_obj = datetime.strptime(timestr, "%Y-%m-%d %H:%M:%S.%f")
obj_stamp = int(time.mktime(datetime_obj.timetuple()) * 1000.0 + datetime_obj.microsecond / 1000.0)
print(obj_stamp)
# 1647737958123

时区转换

pytz模块常用于时区的转换,常常配合datetime一起使用。我们知道datetime除了data方法生成的时间是没有时区概念,其他如time、datetime等都是有时区概念。

获得某个国家的时区名列表:
pytz.country_timezones(‘国家代码’):国家代码参见此处

import pytz
print(pytz.country_timezones('CN'))
# ['Asia/Shanghai', 'Asia/Urumqi']

10位秒级时:

import pytz
ts = 1566395745
tz = pytz.timezone('America/New_York')
dt = pytz.datetime.datetime.fromtimestamp(ts, tz)
dt.strftime('%Y-%m-%d %H:%M:%S')

13位毫秒级时:

import pytz
timeNum = 1118846980400
ts = float(timeNum)/1000
tz = pytz.timezone('America/Los_Angeles')
dt = pytz.datetime.datetime.fromtimestamp(ts, tz)
print(dt.strftime('%Y-%m-%d %H:%M:%S.%f'))

格式化说明

%Y  年
%m  月
%d  日
%H  时
%M  分
%S  秒

%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 当前时区的名称
%% %号本身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值