产品经理让我统计下从1月1号到现在的日均交易额,总交易额倒是很好统计,但是今天是今年的第几天呢?好吧学学这个知识点吧。
time模块
import time
>>> time.gmtime() # utc时间
time.struct_time(tm_year=2015, tm_mon=9, tm_mday=20, tm_hour=13, tm_min=6, tm_se
c=33, tm_wday=6, tm_yday=263, tm_isdst=0)
>>> time.localtime() # 本地时间
time.struct_time(tm_year=2015, tm_mon=9, tm_mday=20, tm_hour=21, tm_min=6, tm_se
c=25, tm_wday=6, tm_yday=263, tm_isdst=0)
>>> time.time() # 当前时间戳,从1970-1-1以来的秒数
1442754566.201
>>> time.mktime(time.localtime()) # 时间转成时间戳
1442754240.0
看看它的这些属性吧
tm_year=2015 # 年
tm_mon=9 # 月
tm_mday=20 # 日
tm_hour=21 # 时
tm_min=6 # 分
tm_sec=25 # 秒
tm_wday=6 # 星期
tm_yday=263 # 一年的第几天
tm_isdst=0 # 夏令时当前是否生效
# 属性可以这样使用
>>> time.localtime().tm_year
2015
time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime()) # 时间转字符串格式
'2015-09-20 13:33:59'
time.strptime('2015-09-20 13:33:59', '%Y-%m-%d %H:%M:%S') # 字符串转时间
time.struct_time(tm_year=2015, tm_mon=9, tm_mday=20, tm_hour=13, tm_min=33, tm_s
ec=59, tm_wday=6, tm_yday=263, tm_isdst=-1)
datetime模块
from datetime import datetime, date, time
date.year
date.month
date.day
date.today()
date.weekday()
date.strftime(fmt)
time.hour
time.minute
time.second
time.microsecond
time.strftime(fmt)
# 平时使用最多的
datetime.today() # 今天时间
datetime.now() # 本地时间
datetime.utcnow() # utc时间(比中国时间晚8小时,中国处东8区)
datetime.strptime(date_string, format) # 字符串转时间
datetime.strftime(fmt) # 时间转字符串
datetime.date()
datetime.time()
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])
datetime.timetuple()
# time.struct_time(tm_year=2015, tm_mon=9, tm_mday=20, tm_hour=18, tm_min=36, tm_s
ec=5, tm_wday=6, tm_yday=263, tm_isdst=-1)
datetime.utctimetuple()
datetime.weekday()
datetime.ctime()
# 'Sun Sep 20 18:36:05 2015'
replace 与 timedelta比较
import datetime
now = datetime.date(2015,9,20)
tomorrow = now.replace(day = 19)
# datetime.date(2015, 9, 19)
d = datetime.timedelta(days=1)
tomorrow = now - d
# datetime.date(2015, 9, 19)
格式字符
%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])
%U 周在当年的周数当年的第几周),星期天作为周的第一天
%w 今天在这周的天数,范围为[0, 6],6表示星期天
%W 周在当年的周数(是当年的第几周),星期一作为周的第一天
%x 日期字符串(如:04/07/10)
%X 时间字符串(如:10:43:39)
%y 2个数字表示的年份
%Y 4个数字表示的年份
%z 与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z 时区名称(如果是本地时间,返回空字符串)
所以到目前,我们有几个方法来解决这个问题
improt time
>>> time.localtime().tm_yday
263
from datetime import datetime
>>> datetime.now().timetuple().tm_yday
263
>>> datetime.now().strftime('%j')
'263'