目录
python脚本中经常会需要进行时间格式字符串和时间戳的转换,另外,也记一下datetime的用法。
用到time模块的地方都需要引入import time
字符串时间变成时间戳
match_time = '2018-05-22 08:30:00'ans_time_stamp = time.mktime(time.strptime(match_time, "%Y-%m-%d %H:%M:%S"))
转换成的时间戳是float类型
时间戳转年月日时间样式的字符串
# time.tme() 得到的是float型时间戳struct_time = time.localtime(time.time()) # 得到结构化时间格式now_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)
datetime格式变时间戳
用pymysql从数据库取出来的时间,如果不为空(记得判断是否为空)则是 datetime
类型,可以直接相减得到 datetime.timedelta
类型,该类型想变时间戳用total_seconds()
函数。
delta_time = check_time - ipo_timeprint(delta_time.total_seconds())
若是datetime
类型直接变时间戳用如下方法:
import datetimeimport timedtime = datetime.datetime.now()print(dtime)ans_time = time.mktime(dtime.timetuple())print(ans_time)
字符串转别的时间格式
# Wed May 09 00:00:00 CST 2018 转 2018-05-09 00:00:00time_str = 'Wed May 09 00:00:00 CST 2018'dt = datetime.datetime.strptime(time_str, "%a %b %d %X %Z %Y")
直接从字符串中提取月日
import datetimea = '2018-10-03 00:55:00'b = datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S').strftime('%m-%d')
得到今天昨天日期
today = datetime.date.today() yesterday = today - datetime.timedelta(days=1)# 若要转成字符串还需要用str()
得到某月或某年
tmp_time = datetime.date(2018, 7, 20)tmp_time.monthtmp_time.year
得到上个月
>>> import datetime>>> today = datetime.date.today()>>> first = today.replace(day=1)>>> firstdatetime.date(2018, 10, 1)>>> last_month = first - datetime.timedelta(days=1)>>> print(last_month.strftime("%Y%m"))201809
得到下个月的同一日
import datetimefrom dateutil.relativedelta import relativedeltatoday = datetime.date.today()next_month_day = today + relativedelta(months = 1)print(next_month_day)
参考: