首页 > 技术文章 > Python datetime time 等时间 日期 之间的计算和相互转化

haiton 2019-04-28 15:20 原文

from datetime import datetime, date, timedelta, timezone
from time import time, ctime, localtime, strftime, strptime, mktime


'''
%Y %m %d %H %M %S 年月日时分秒
%A %a   全写星期 简写星期

'''
# 生成当前时区日期事件字符串
tct = ctime()
print(tct,type(tct))
print(tct.strip(),type(tct.strip()))

# 两个获取时间的方法
print(time(),datetime.now())

print('--------------------------')
# 获取日期对象并格式化输出
print(datetime.now().strftime('%Y-%m-%d %Z %H:%M:%S %A %x %X 星期 %w'))

# 获取可计算的日期差值对象
print(timedelta(1))

# 日期字符串转化为datetime对象
datetime_str = '2019-08-12 12/23/50'

print(datetime.strptime(datetime_str, '%Y-%m-%d %H/%M/%S'))

dt = datetime.now()
print(timedelta(2))

# timetuple 方式获取日期对象
dto = datetime(19,4,12,23,45,10)
print(dto)
print(dto.timetuple())

print('=============================')
# 日期计算,根据日期时间差值计算日期
today = datetime.now()
print(today)
days = timedelta(3)
afterday = today+days
print(afterday)
day_minute = timedelta(days=3,seconds=3600)
after_day = today+day_minute
print(after_day)

print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')

# 获取UTC时间并进行时区换算
utcdt = datetime.utcnow()
print(utcdt)
print(utcdt.astimezone(timezone(timedelta(hours=8))))
print(datetime.now().strftime('%Y>%m>%d %H:%M:%S'))
print(datetime.now()-timedelta(hours=8))

# 秒数换日期时间
n = time()
d = timedelta(seconds=n)
print(localtime(n))
print(strftime('%Y/%m/%d %H:%M', localtime(n)))

# 获取当前日星期几 0-6 周一-周日
print(datetime.weekday(datetime.now()))

# 日期格式字符串换算秒数
st = strptime('2019.03.24', '%Y.%m.%d')
print(st)
print(mktime(st))

'''
Sun Apr 28 15:12:38 2019 <class 'str'>
Sun Apr 28 15:12:38 2019 <class 'str'>
1556435558.4862983 2019-04-28 15:12:38.486300
--------------------------
2019-04-28  15:12:38 Sunday 04/28/19 15:12:38 星期 0
1 day, 0:00:00
2019-08-12 12:23:50
2 days, 0:00:00
0019-04-12 23:45:10
time.struct_time(tm_year=19, tm_mon=4, tm_mday=12, tm_hour=23, tm_min=45, tm_sec=10, tm_wday=4, tm_yday=102, tm_isdst=-1)
=============================
2019-04-28 15:12:38.487751
2019-05-01 15:12:38.487751
2019-05-01 16:12:38.487751
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2019-04-28 07:12:38.487764
2019-04-28 07:12:38.487764+08:00
2019>04>28 15:12:38
2019-04-28 07:12:38.487788
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=28, tm_hour=15, tm_min=12, tm_sec=38, tm_wday=6, tm_yday=118, tm_isdst=0)
2019/04/28 15:12
6
time.struct_time(tm_year=2019, tm_mon=3, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=83, tm_isdst=-1)
1553356800.0
'''

'''
%a      星期的简写。如 星期三为Web
%A      星期的全写。如 星期三为Wednesday
%b      月份的简写。如4月份为Apr
%B      月份的全写。如4月份为April
%c:     日期时间的字符串表示。(如: 04/07/10 10:43:39)
%d:     日在这个月中的天数(是这个月的第几天)
%f:     微秒(范围[0,999999])
%H:     小时(24小时制,[0, 23])
%I:     小时(12小时制,[0, 11])
%j:     日在年中的天数 [001,366](是当年的第几天)
%m:     月份([01,12])
%M:     分钟([00,59])
%p:     AM或者PM
%S:     秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
%U:     周在当年的周数当年的第几周),星期天作为周的第一天
%w:     今天在这周的天数,范围为[0, 6],6表示星期天
%W:     周在当年的周数(是当年的第几周),星期一作为周的第一天
%x:     日期字符串(如:04/07/10)
%X:     时间字符串(如:10:43:39)
%y:     2个数字表示的年份
%Y:     4个数字表示的年份
%z:     与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z:     时区名称(如果是本地时间,返回空字符串)
'''

 

推荐阅读