概述:今天组长让做一个可视化 横轴都是当天24小时 才发现自己对时间模块很不熟悉
所以学习一下时间模块的用法
#! /usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2019/9/6 0006 20:36
# @Author : P.D
# @Site :
# @File : time_demo.py
import time
import re
from datetime import datetime, timedelta
ticket = time.time()
print(ticket)
# 将时间戳转换为时间元组
local_time = time.localtime(ticket)
print("当前时间为: ", local_time)
# 格式化成2016-03-20 11:45:39形式
turn = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("格式化当前时间:", time.strftime("%Y-%m-%d %H:%M:%S", local_time))
# 格式化成Sat Mar 28 22:24:24 2016形式
print("格式化当前时间:", time.strftime("%a %b %d %H:%M:%S %Y", local_time))
# 将格式字符串转换为时间戳 这里需要将转换好的时间转化为时间元组在转换成时间戳
# time.mktime(tupletime)
# 接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)。
print(time.mktime(time.strptime(turn, "%Y-%m-%d %H:%M:%S")))
# datetime模块
# 打印获取当前时间
rv = datetime.now()
print(rv)
# 将当前时间截取出来供使用 比如一天一个数据库 按照空格和.分割
# ['2019-09-06', '21:19:06', '566249']
rs = re.split(r"[\s.]", str(rv))
# 截取年月日部分
print(rs[0])
# 获取指定日期和时间
# 要指定某个日期和时间,我们直接用参数构造一个datetime:
dt = datetime(2015, 4, 19, 12, 20)
print(dt)
# datetime转换为timestamp
# 在计算机中,时间实际上是用数字表示的。我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,
# 记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。
# 你可以认为:
# timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00
# 对应的北京时间是:
# timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00
# 可见timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC时间就确定了,转换到任意时区的时间也是完全确定的,
# 这就是为什么计算机存储的当前时间是以timestamp表示的,因为全球各地的计算机在任意时刻的timestamp都是完全相同的(假定时间已校准)
print(dt.timestamp())
# timestamp转换为datetime
# 要把timestamp转换为datetime,使用datetime提供的fromtimestamp()方法:
t = 1429417200.0
print(datetime.fromtimestamp(t))
# timestamp也可以直接被转换到UTC标准时区的时间
print(datetime.utcfromtimestamp(t))
# datetime加减
# 对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+和-运算符,不过需要导入timedelta这个类:
#
# >>> from datetime import datetime, timedelta
# >>> now = datetime.now()
# >>> now
# datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
# >>> now + timedelta(hours=10)
# datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
# >>> now - timedelta(days=1)
# datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
# >>> now + timedelta(days=2, hours=12)
# datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)
# 可见,使用timedelta你可以很容易地算出前几天和后几天的时刻。
r = datetime.fromtimestamp(ticket)
print(r + timedelta(hours=1)) # 当前时间+1小时
print(r - timedelta(hours=1)) # 当前时间-1小时
print(r + timedelta(days=1)) # 当前时间+1天
print(r - timedelta(days=1)) # 当前时间-1天
print(r + timedelta(minutes=10)) # 当前时间+10分钟
print(r - timedelta(minutes=10)) # 当前时间-10分钟
print(r + timedelta(hours=2, minutes=20)) # 当前时间+2小时20分钟
下面是一个获取当前时间下24小时的方法
def get_hours():
"""获取当前时间下24小时"""
now_time = datetime.now()
result = list()
for i in range(-24, 0):
result.append(now_time + timedelta(hours=i))
return result
其中result列表中每个元素都是datetime对象,遍历列表查看结果