python中time和datetime模块

本篇文章为time模块的随笔,后期遇到使用场景及时填补。
时间有三种表示方式,分别是时间戳、格式化的字符串、struct_time方式。
一、time
1.运行time():获取的是以秒为单位浮点数时间戳(获取的是UTC+8的时间戳
在这里插入图片描述
2.三种时间格式的转换
在这里插入图片描述
strptime():将一日期字符串转换为datetime日期格式
使用格式:datetime.strptime(date_string,format),其中date_string是要转换成日期的字符串,format:根据date_string不同而不同,format有一下格式:
%a - 简写的星期几
%A - 完整的星期几
%b - 缩写的月份名称
%B - 完整的月份名称
%c - 首选日期和时间表示
%C - 世纪值(年份除以100,范围从00到99)
%d - 该月的第几天(01?31)
%D - 类似 %m/%d/%y
%e - 该月的一天(1?31)
%g - 类似于%G,但是没有世纪
%G - 对应于ISO周数4位数的年份(参见%V)
%h - 类似于 %b
%H - 小时,使用24小时制(00?23)
%I - 小时,使用12小时制(01?12)
%j - 一年中的哪一天(001?366)
%m - 月份(01?12)
%M - 分钟
%n - 换行符
%p - 根据给定的时间值am或pm
%r - 时间在上午和下午的符号:am/pm
%R - 时间以24小时制
%S - 秒
%t - 制表符
%T - 当前时间,等于 %H:%M:%S
%u - 工作日为数字(1到7),星期一= 1。警告:在Sun Solaris上周日=1
%U - 当年的周数,第一个星期日作为第一周的第一天
%V - 本年度ISO 8601的周数(01到53),其中,第1周是在本年度至少4天的第一个星期,星期一作为一周的第一天
%W - 当年的周数,与第一个星期一作为第一周的第一天
%w - 星期为一个小数,星期日=0
%x - 没有时间的日期表示
%X - 无日期首选的时间表示
%y - 一年无世纪(范围从00到99)
%Y - 今年,包括世纪
%Z or %z - 时区或名称或缩写
%% -文字%字符

time1 = "2023-07-08 12:13:14.789"
datetime_obj1 = datetime.datetime.strptime(time1, "%Y-%m-%d %H:%M:%S.%f")

运行完以后:
如果只想输出毫秒,可以使用%f,如果想要输出微秒,可以使用“%f”以及更多的0,eg:%f000:将输出3为微秒
在这里插入图片描述
获取时间戳:mktime():是localtime()反函数,它的参数是struct_time或全九元组,返回一个浮点数

在这里插入图片描述
可以使用datetime.microsecond属性来获取当前时间的毫秒部分
实例:

import datetime,time
time1 = "2023-07-08 12:13:14.789"
datetime_obj1 = datetime.datetime.strptime(time1, "%Y-%m-%d %H:%M:%S.%f")
print(time.mktime(datetime_obj1.timetuple()))
obj_stamp1 = int(time.mktime(datetime_obj1.timetuple()) * 1000.0 + datetime_obj1.microsecond / 1000.0)
print(obj_stamp1)

在这里插入图片描述

二datetime
1、运行datetime.now()和datetime.timedelta()
print(datetime.datetime.now())
print(datetime.datetime.now().date() - datetime.timedelta(days=1))
结果:
在这里插入图片描述
2、获取当前时间的时分秒

    print(datetime.datetime.now().time().hour)
    print(datetime.datetime.now().time().minute)
    print(datetime.datetime.now().time().second)

运行结果:在这里插入图片描述

我的应用场景:区分不同时间做不同的事情

    while True:
        if str((datetime.datetime.now().time().hour)) == "23" and str((datetime.datetime.now().time().minute)) == "59" and str((datetime.datetime.now().time().second)) == "59":
          print("23点执行了")
          time.sleep(1
          print("00点执行了")
          break

3、timetuple():将一个datetime以TimeTuple的形式返回
TimeTuple表示一个固定格式的时间,是一个有序的时间元组,包含了时间9要素:
(年,月,日,时,分,秒,星期几【0-6】),元组每个元素都是整数类型

time1 = "2023-07-08 12:13:14.789"
datetime_obj1 = datetime.datetime.strptime(time1, "%Y-%m-%d %H:%M:%S.%f")
tp = datetime_obj1.timetuple()
print(tp)
print(type(tp))

运行结果:
在这里插入图片描述
三、常用的转换方法

import datetime
import time
def get_LondonTime(BeiJing_time):
    """
    功能:根据给定北京时间,返回伦敦时间字符串
    :param BeiJing_time: 北京时间
    :return: 伦敦时间
    """
    BeiJing_time_str = datetime.datetime.strptime(BeiJing_time, "%Y-%m-%d %H:%M:%S")
    now_bef_start = (BeiJing_time_str - datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
    London_time = now_bef_start.replace(" ", "T") + ".000Z"

    return London_time


def get_timestamp(str_time):
    """
    功能:格式化的字符串转换为时间戳(S级)
    :param str_time:格式化的字符串
    :return:时间戳
    """
    struct_str_time = time.strptime(str_time, '%Y-%m-%d %H:%M:%S')
    timestamp = int(time.mktime(struct_str_time))
    return timestamp

def get_str_time(timestamp):
    """
    功能:实现时间戳转化为字符串
    :param timestamp:时间戳
    :return:字符串时间
    """
    struct_time = time.localtime(timestamp)
    str_time = time.strftime('%Y-%m-%d %H:%M:%S',struct_time)
    return str_time
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值