python time模块和datetime模块学习

概述:今天组长让做一个可视化 横轴都是当天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对象,遍历列表查看结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值