Python常用的日期和时间方法

本文介绍了如何使用Python进行时间戳获取、格式化、转换、日期计算以及区间操作,包括常用的时间格式化符号、日期差计算和特定日期集合生成。涵盖了datetime模块的深入应用,适合IT开发者理解和实践。
摘要由CSDN通过智能技术生成

获取当前时间戳

import time

t = time.time()
print(t)  # 获取当前的时间戳
print(int(t))  # 获取整数时间戳
print(int(round(time.time() * 1000)))  # 获取毫秒级的时间戳

结果如下:

1621494071.3625572
1621494071
1621494071363

格式化时间

import time

n1 = time.strftime('%Y-%m-%d %H:%M:%S')
print('当前时间格式化:{}'.format(n1))

n2 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1621487655))
print('指定时间格式化:{}'.format(n2))
结果如下:

当前时间格式化:2021-05-20 15:12:52
指定时间格式化:2021-05-20 13:14:15

常用的格式化符号如下

符号含义范围
%y两位数的年份表示00 ~ 99
%Y四位数的年份表示000 ~ 999
%m月份01 ~ 12
%d月内中的一天0 ~ 31
%H24小时制的小时数0 ~ 23
%I12小时制的小时数01 ~ 12
%M分钟数00 ~ 59
%S秒数00 ~ 59

def strptime(string: str,
             format: str = ...) 
常用的格式代码:
%Y 以世纪为单位的十进制数字的年份。
%m 月,作为小数的数字[01,12]。
%d 每月的一天,作为十进制数字[01,31]。
%H 小时(24小时时钟)为小数[00,23]。
%M 分钟为小数点[00,59]。
%S 秒,十进制数字[00,61]。
%z 时区与UTC的偏差。
%a 当地的星期名称缩写。
%A 当地的完整星期名称。
%b 本地语言的月名缩写。
%B 本地语言的完整月份名称。
%c 本地语言的适当日期和时间表示。
%I 小时(12小时时钟)为十进制数字[01,12]。
%p 当地的上午或下午。

格式化时间转时间戳

 
import time

s = '2021-05-20 13:14:00'
t = time.mktime(time.strptime(s, "%Y-%m-%d %H:%M:%S"))
print(t)
结果如下:

1621487640.0

获取今天日期

 
import time
import datetime

# 获取当前时间,然后格式化为指定格式
today1 = time.strftime('%Y-%m-%d')
print(today1)

# 获取今天的日期
today2 = datetime.date.today()
print(today2)
结果如下:

2021-05-20
2021-05-20

获取与datetime.now()相关的信息

 
import datetime

# 当前时间
print(datetime.datetime.now())
# 当前时间(格式化)
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
# 当前日期
print(datetime.datetime.now().date())
# 年
print(datetime.datetime.now().year)
# 月
print(datetime.datetime.now().month)
# 日
print(datetime.datetime.now().day)
结果如下:

2021-05-20 17:44:35.406220
2021-05-20 17:44:35
2021-05-20
2021
5
20

求两个日期的天数差

 
import datetime

a = datetime.date(2021, 5, 20)
b = datetime.date(2021, 5, 10)
c = a - b
print(c.days)
结果如下:

10

获取当前时间前后的时间

 
import datetime

# 1小时前
a = datetime.datetime.now() - datetime.timedelta(hours=1)
print('1小时前:', a.strftime('%Y-%m-%d %H:%M:%S'))

# 10分钟之后
b = datetime.datetime.now() + datetime.timedelta(minutes=10)
print('10分钟后:', b.strftime('%Y-%m-%d %H:%M:%S'))

# 一周前
c = datetime.datetime.now() - datetime.timedelta(days=7)
print('一周前:', c.strftime('%Y-%m-%d %H:%M:%S'))
结果如下

1小时前: 2021-05-20 16:34:09
10分钟后: 2021-05-20 17:44:09
一周前: 2021-05-13 17:34:09
注:datetime.timedelta()表示一个时间的长度,通常用作求两个日期或者时间的差值。

获取n年内13号的星期数

P1202 [USACO1.1]黑色星期五Friday the Thirteenth - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

import sys
import time
n=int(sys.stdin.readline())
time.localtime(0)
ans=[0]*7
for i in range(1900,1900+n):
    for j in range(1,13):
        s = '{:d}{:0>2d}13'.format(i,j)
        t = time.strptime(s, "%Y%m%d")
        ans[t.tm_wday]+=1
        # print(t.tm_wday)
print(*ans[5:],*ans[:5])

(๑•ᴗ•๑)♡ 欢迎回来! (cnblogs.com)

python3 获取两个日期字符串时间段内所有日期集合

# 根据开始日期、结束日期返回这段时间里所有天的集合
def getDatesByTimes(sDateStr, eDateStr):
    list = []
    datestart = datetime.datetime.strptime(sDateStr, '%Y-%m-%d')
    dateend = datetime.datetime.strptime(eDateStr, '%Y-%m-%d')
    list.append(datestart.strftime('%Y-%m-%d'))
    while datestart < dateend:
        datestart += datetime.timedelta(days=1)
        list.append(datestart.strftime('%Y-%m-%d'))
    return list
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值