- 时间戳转化为格式化日期,形如:2021-11-09 09:46:48
1import time 2import datatime 3timestamp = 163642240800 # 如果你的时间是在字典或者json中取出的要进行转化,因为时间戳必须是整形 4time_local = time.localtime(timestamp / 1000) # 转化成localtime 5timeformat = time.strftime("%Y-%m-%d %H:%M:%S", time_local) # 转换成新的时间格式(精确到秒) 6print(timeformat) # 2021-11-09 09:46:48 格式化之后的日期 7# 如果你想精确到毫秒,接下来的步骤就可以了 8d = datetime.datetime.fromtimestamp(timestamp / 1000) 9str1 = d.strftime("%Y-%m-%d %H:%M:%S.%f") # 精确到毫秒 10print(str1) #2021-11-09 09:46:48.000000
- 格式化日期转化为时间戳
1# 字符类型的时间 2from datetime import time 3import time 4tss1 = '2022-12-23 21:19:03' # 时间为字符串形式 5# 转为时间数组 6timeArray = time.strptime(tss1, "%Y-%m-%d %H:%M:%S") # 第二个参数要根据你的时间来确定它的格式 7print(timeArray) # time.struct_time(tm_year=2022, tm_mon=12, tm_mday=23, tm_hour=21, tm_min=19, tm_sec=3, tm_wday=4, tm_yday=357, tm_isdst=-1) 8# timeArray可以调用tm_year等 9print(timeArray.tm_year) 10print(timeArray.tm_yday) 11# 转为时间戳 12timeStamp = int(time.mktime(timeArray)) 13print(timeStamp)
这里呢其实还有一个补充知识,就是说对于上面提到的timeArray,为什么打印出来是括号中的一堆东西呢?
其实呢这个也是非常简单的,在python的基础中我们知道有个时间模块time,tm_year就是代表年份;tm_mon代表月份,值为1-12;tm_mday代表日,可选1-31;time_hour代表小时,可选0-23;tm_min为分钟,0-59;tm_sec为秒,0-60;tm_wday代表周几,0-6(其中0代表周一,可能和我们理解的有出入记住就好),最后一个tm_isdst已经很少提到了,可以了解一下。
------此图片是转载于csdn
3. python获取指定日期的前N天日期和后N天日期
这时候可能需要用到一个模块timedelta,这个代表两个时间之间的时间差。
1from datetime import date, datetime, timedelta # 有的模块可能需要分着导入,自己根据版本定 2day = date.today() # 获取当前的时间 3print(day) # 2022-12-23 4now = datetime.now() # 读取的时间是系统的本地时间 5print(now) # 2022-12-23 15:32:25.584558 精确到了时分秒,毫秒 6delta = timedelta(days=5) # 这里就是代表时间差,又叫做偏移量,也就是你想要找的前几天或者后几天 7n_days_after = now + delta # 将现在的时间和偏移量相加就是将来的时间 8n_days_forward = now - delta # 现在的时间减去偏移量就是之前的时间 9print(("当前日期:{}").format(day)) # 这里用的是字符串的一种格式化方式,可以将format中的内容填充到{}里面 10print("向后推迟5天的日期:{}".format(n_days_after.strftime('%Y-%m-%d'))) # 2022-12-28 这里是精确到了日,没有精确到秒 11print("向前推5天的日期:{}".format(n_days_forward.strftime('%Y-%m-%d'))) # 2022-12-18 和上面一样