Python计算自然周和自然月的首日时间戳,python首日,因工作中需要统计数据,而
Python计算自然周和自然月的首日时间戳,python首日,因工作中需要统计数据,而
因工作中需要统计数据,而往往这些统计涉及到自然周和自然月,这些东西手工指定很容易,但是程序自动运行的时候我们需要判断每个月的天数,而且对于自然月的加减,还要考虑跨年的自然月与是否闰年,因而我写了一个小程序计算自然周与自然月,通过时间戳计算,返回时间戳,如果计算天则返回当天凌晨的时间戳,如果计算周则返回当周周一的凌晨时间戳,自然月则返回当月1日凌晨时间戳。方法有些笨,但是绝对有效!
#!/usr/bin/python# -*- coding: utf-8 -*-"""@ 计算自然周第一天、自然月第一天和每天的凌晨时间戳@ author : jomin@ email : qkzhaoming@163.com@ mtime : 2012-09-01"""import timedef get_day_begin(ts = time.time(),N = 0): """ N为0时获取时间戳ts当天的起始时间戳,N为负数时前数N天,N为正数是后数N天 """ return int(time.mktime(time.strptime(time.strftime('%Y-%m-%d',time.localtime(ts)),'%Y-%m-%d'))) + 86400*Ndef get_week_begin(ts = time.time(),N = 0): """ N为0时获取时间戳ts当周的开始时间戳,N为负数时前数N周,N为整数是后数N周,此函数将周一作为周的第一天 """ w = int(time.strftime('%w',time.localtime(ts))) return get_day_begin(int(ts - (w-1)*86400)) + N*604800def get_month_begin(ts = time.time(),N = 0): """ N为0时获取时间戳ts当月的开始时间戳,N为负数前数N月,N为正数后数N月 """ month_day = {1:31,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31} cur_y,cur_m,cur_d = [int(x) for x in time.strftime('%Y-%m-%d',time.localtime(ts)).split('-')] if (cur_y%4 == 0 and cur_y%100 != 0) or cur_y%400 == 0: month_day[2] = 29 else: month_day[2] = 28 t = get_day_begin(ts) - (cur_d-1)*86400 real_month = N + cur_m if real_month == cur_m: return t if N > 0: if real_month <= 12: for x in xrange(cur_m,real_month): t += month_day[x]*86400 if real_month > 12: for x in xrange(cur_m,13): t += month_day[x]*86400 t = get_month_begin(t,real_month - 13) if N < 0: if real_month >= 1: for x in xrange(real_month,cur_m): t -= month_day[x]*86400 if real_month < 1: for x in xrange(1,cur_m): t -= month_day[x]*86400 t -= month_day[12]*86400 t = get_month_begin(t,real_month) return tif __name__ == "__main__": t = time.time() print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(get_day_begin(t,1))) print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(get_week_begin(t,-2))) print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(get_month_begin(t,-3)))#该片段来自于http://byrx.net
相关内容
- python SSH暴力破解工具,pythonssh暴力破解,[Python]代码#!
- 一个用Python给Vim做的插件,PythonVim做插件,function! Go
- Python登录人人网并抓取新鲜事,python新鲜事,Python登录人
- python计算对角线有理函数插值,python对角线插值,''' p
- 练习python,,[Python]代码de
- 正态分布概率计算,态分布概率计算,[Python]代码de
- python中如果通过索引遍历列表,python索引遍列表,pytho
- 参数化建筑-基础-附表皮,建筑表皮,建筑立面# -*- co
- 递归查找文件,递归查找,[Python]代码#!
- FFT估计,,用Python进行FFT
评论关闭