Python 时间操作
取现行时间
- 取年
datetime.now.now().yeay
- 取月
datetime.now.now().month
- 取日
datetime.now.now().day
- 13 位时间戳
int(round(time.time() * 1000))
- 10 位时间戳
int(time.time())
from datetime import datetime
"""取当前时间与日期"""
datetime.now()
# 2019-06-22 22:15:16.529856
"""取年"""
datetime.now().year
# 2019
"""取月"""
datetime.now().month
# 06
"""取日"""
datetime.now().day
# 22
时间对比
字符串时间对比
d1 = datetime.strptime('2021-08-03 09:57:41', '%Y-%m-%d %H:%M:%S')
d2 = datetime.strptime('2021-07-03 09:57:41', '%Y-%m-%d %H:%M:%S')
print(d1-d2)
31 days, 0:00:00
上面是一个简单的计算方式,可以算出两个时间间隔
计算隔天数
import time
from datetime import datetime
def date_distance(date1, date2):
"""
1 str 转成 datetime.datetime 类型
2 datetime.datetime 转成 秒
3 distance_second = int(秒1) - int(秒2)
4 return 两个日期的间隔天数
"""
try:
# 1 str 转成 datetime.datetime 类型
date1 = datetime.strptime(date1, '%Y-%m-%d')
date2 = datetime.strptime(date2, '%Y-%m-%d')
except:
print('时间转换失败!\n{} , {} 的格式应为 %Y-%m%d 例如:2021-05-09 '.format(date1, date2))
# 2 datetime.datetime 转成 秒
second1 = time.mktime(date1.timetuple())
second2 = time.mktime(date2.timetuple())
# 3 res = int(秒1) - int(秒2)
distance_second = int(second1) - int(second2)
# 4 返回间隔日期
distance_date = int(distance_second / 60 / 60 / 24)
if distance_date < 0:
distance_date = -distance_date
return distance_date
if __name__ == '__main__':
res = date_distance('2021-05-05', '2021-05-08')
print(res)
计算相差秒数
比如取现在的时间与今晚12点,还差多少秒
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
dt = tomorrow.strftime('%Y-%m-%d')
time_array = time.strptime(f"{dt} 00:00:00", "%Y-%m-%d %H:%M:%S")
print(int(time.mktime(time_array))-int(time.time()))
取当前周数
- 返回周几
.weekday()+1
- 返回第几周(当年中)
.isocalendar()
from datetime import datetime
"""返回今天是周几"""
datetime.now().weekday()+1
"""范围今天是今年的第几周"""
datetime.now().isocalendar()
# 返回元祖 (2019, 25, 6) 年、第几周、周几
格式化日期
- 用
date()
自动化设置 - 用
time()
设置 - 利用
strftime()
自定义时间格式
from datetime import datetime
datetime.now().date()
# datetime.date(2019, 6, 22)
datetime.now().time()
# datetime.time(22, 26, 52, 200593)
代码 | 说明 |
---|---|
%H |
小时(24小时制) |
%I |
小时(12小时制) |
%M |
两位数的分钟 |
%S |
秒 |
%w |
星期几(0开始) |
%U |
每年的第几周,周日为每周第一天 |
%W |
每年的第几周,周一为每周第一天 |
%F |
简写为 年-月-日 |
%D |
简写为 月/日/年 |
strftime()
案例
from datetime import datetime
datetime.now().strftime('%Y-%m-%d')
时间与字符串转换
时间 ==> 字符串
- 取出当前时间
- 利用
strftime()
组装成所需格式 - 利用
str()
转换成所需字符串
from datetime import datetime
now = datetime.now()
str(now.strftime('%Y-%m-%d'))
字符串 ==> 时间
使用
parse()
函数将时间格式转化为字符串格式
from datetime import datetime
from dateutil.parser import parse
str_time = '2019-06-22'
parse(str_time)
列举日期
枚举年所有日期
import arrow
import datetime
import calendar
def isLeapYear(years):
"""列举全年日期"""
assert isinstance(years, int), "请输入整数年,如 2018"
if (years % 4 == 0 and years % 100 != 0) or (years % 400 == 0): # 判断是否是闰年
days_sum = 366
return days_sum
else:
days_sum = 365
return days_sum
def getAllDayPerYear(years):
start_date = '%s-1-1' % years
a = 0
all_date_list = []
days_sum = isLeapYear(int(years))
print()
while a < days_sum:
b = arrow.get(start_date).shift(days=a).format("YYYY-MM-DD")
a += 1
all_date_list.append(b)
return all_date_list
getAllDayPerYear('2020')
枚举月所有日期
def getAllDayMonth(years, month):
a = 0
all_date_list = []
start_date = '%s-%s-1' % (years, month)
monthRange = calendar.monthrange(int(years),int(month))[1]
while a < monthRange:
b = arrow.get(start_date).shift(days=a).format("YYYY-MM-DD")
a += 1
all_date_list.append(b)
return all_date_list
if __name__ == "__main__":
month = datetime.datetime.now().month
print(getAllDayMonth('2020', '10'))
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!