这里总结了python常用的时间和日期处理的几个函数,并封装了常用的时间操作。
引入的主要的包是time和datetime;
时间元组---》时间字符串:time.strftime(格式字符串,时间元组)
时间字符串--》时间元组:time.strptime(时间字符串,格式字符串)
时间戳--》时间元组:time.localtime(时间戳)
时间元组--》时间戳:time.mktime(时间元组)
时间变量:datetime.timedelta(hours=xxx),在datetime.datetime.now()基础上加减
几个小栗子作为实践:
#coding='utf-8'
'''
1.获得当前日期:xxxx-xx-xx,xxxx年xx月xx日
2.获得当前时间:xx:xx:xx,xx时xx分xx秒
3.获得年月日时分秒:xxxx-xx-xx xx:xx:xx,xxxx年xx月xx日xx时xx分xx秒
4.将日期转换为时间戳
5.将时间戳转换为年月日时分秒
6.计算明天、昨天的日期
7.计算xxx小时的时间
8.计算yyy天之后和之前的日期
9.传一个日期,计算是星期几
10.传一个日期,计算今天时今年的第多少天
'''
import time
import locale
def get_today():
'''
:return: 当天日期,格式:xxxx-xx-xx
'''
return time.strftime("%Y-%m-%d",time.localtime())
def get_today_Chinese():
'''
:return: 当天日期,格式:xxxx年xx月xx日
'''
locale.setlocale(locale.LC_CTYPE,'chinese')#如果格式中有中文,需要先切换到中文模式
return time.strftime("%Y年%m月%d日",time.localtime())
def get_now():
'''
:return: 当前时间:xx:xx:xx
'''
return time.strftime("%H:%M:%S",time.localtime())
def get_now_chinese():
'''
:return: 当前时间:xx时xx分xx秒
'''
return time.strftime("%H时%M分%S秒",time.localtime())
def get_today_now():
'''
:return: 当前时间,格式为:xxxx-xx-xx xx:xx:xx
'''
return time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
def get_today_now_chinese():
'''
:return: 当前时间,格式为:xxxx年xx月xx日xx时xx分xx秒
'''
return time.strftime("%Y年%m月%d日 %H时%M分%S秒",time.localtime())
def date_to_timestamp(s):
'''
:param s: %Y-%m-%d格式的时间
:return: s对应的时间戳
'''
return time.mktime(time.strptime(s,"%Y-%m-%d"))
def timestamp_to_strtime(s):
'''
:param s: 时间戳
:return: s对应的时间字符串,格式为:%s年%s月%s日%s时%s分%s秒
'''
return "%s年%s月%s日%s时%s分%s秒"%(time.localtime(s).tm_year,time.localtime(s).tm_mon,time.localtime(s).tm_mday,
time.localtime(s).tm_hour,time.localtime(s).tm_min,time.localtime(s).tm_sec)
import datetime
def get_tomorrow():
'''
:return: 第二天日期(明天),格式为xxxx-xx-xx
'''
now = datetime.datetime.now()
delta = datetime.timedelta(days=1)
newTime = now + delta
return str(newTime)[:-16]
def get_yestoday():
'''
:return: 前一天日期(昨天),格式为xxxx-xx-xx
'''
now = datetime.datetime.now()
delta = datetime.timedelta(days=-1)
newTime = now + delta
return str(newTime)[:-16]
def get_hours_after(n):
'''
:param n:小时数,整数
:return: n小时之后的时间,格式为xxxx-xx-xx xx:xx:xx
'''
if not isinstance(n,int):
return None
now = datetime.datetime.now()
delta = datetime.timedelta(hours=n)
newTime = now + delta
return str(newTime)[:-7]
def get_days_after(n):
'''
:param n:天数,整数
:return: n天之后的日期,格式为xxxx-xx-xx
'''
now = datetime.datetime.now()
delta = datetime.timedelta(days=n)
newTime = now + delta
return str(newTime)[:-16]
def get_days_before(n):
'''
:param n:天数,整数
:return: n天之前的日期,格式为xxxx-xx-xx
'''
now = datetime.datetime.now()
delta = datetime.timedelta(days=-n)
newTime = now + delta
return str(newTime)[:-16]
def get_week(s):
'''
:param s: %Y-%m-%d格式的时间
:return: 星期几
'''
return time.strptime(s,"%Y-%m-%d").tm_wday+1
def get_yday(d):
'''
:param s: %Y-%m-%d格式的时间
:return: 当年的第几天
'''
return time.strptime(d,"%Y-%m-%d").tm_yday
if __name__=="__main__":
print(get_today())
print(get_today_Chinese())
print(get_now())
print(get_now_chinese())
print(get_today_now())
print(get_today_now_chinese())
print(date_to_timestamp('2019-03-14'))
print(timestamp_to_strtime(time.time()))
print(get_tomorrow())
print(get_yestoday())
print(get_days_after(2))
print(get_days_before(2))
print(get_week("2019-03-24"))
print(get_yday('2019-03-24'))
print(get_hours_after(5))
网友评论