免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3454 | 回复: 5
打印 上一主题 下一主题

请教如何计算2个时间之间包含的周数的列表 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-23 11:06 |只看该作者 |倒序浏览
新手求助下,下面的需求代码应该怎么写的?非常感谢
  
如, 知道2个时间点  2016-02-23  和  2016-05-23 ,我如何获取这2个时间之间对应的周数的列表?,如果年份不一样的话,如何处理的?或者有没有现成类似功能的模块的? 还请大牛帮忙指点下的

论坛徽章:
0
2 [报告]
发表于 2016-05-23 13:08 |只看该作者
本帖最后由 Hadron74 于 2016-05-23 13:10 编辑

回复 1# jiangling_0103
  1. from datetime import datetime,timedelta

  2. d1 = "2016-02-23"
  3. d2 = "2016-05-23"

  4. date1=datetime.strptime(d1,"%Y-%m-%d")
  5. date2=datetime.strptime(d2,"%Y-%m-%d")
  6. delta = date2 - date1

  7. per_day_seconds = 24*60*60
  8. per_week_seconds = 7*per_day_seconds
  9. total_seconds = delta.total_seconds()
  10. weeks = total_seconds//per_week_seconds
  11. days = total_seconds//per_day_seconds
  12. if weeks*per_week_seconds < total_seconds:    weeks += 1

  13. print "Delata Time:",delta,"Weeks:",weeks

  14. oneday = timedelta(days=1)
  15. WEEK=["M","T","W","R","F","S","U"]

  16. d0=date1
  17. weekdays = [d0,]
  18. for i in range(int(days)):
  19.     d0 += oneday
  20.     if d0.weekday() == 6 :     # For Sunday
  21.         print ",".join([str((WEEK[d.weekday()],d.strftime("%Y-%m-%d"))) for d in weekdays])
  22.         weekdays = []
  23.     weekdays.append(d0)

  24. print ",".join([str((WEEK[d.weekday()],d.strftime("%Y-%m-%d"))) for d in weekdays])
复制代码
  1. Delata Time: 90 days, 0:00:00 Weeks: 13.0
  2. ('T', '2016-02-23'),('W', '2016-02-24'),('R', '2016-02-25'),('F', '2016-02-26'),('S', '2016-02-27')
  3. ('U', '2016-02-28'),('M', '2016-02-29'),('T', '2016-03-01'),('W', '2016-03-02'),('R', '2016-03-03'),('F', '2016-03-04'),('S', '2016-03-05')
  4. ('U', '2016-03-06'),('M', '2016-03-07'),('T', '2016-03-08'),('W', '2016-03-09'),('R', '2016-03-10'),('F', '2016-03-11'),('S', '2016-03-12')
  5. ('U', '2016-03-13'),('M', '2016-03-14'),('T', '2016-03-15'),('W', '2016-03-16'),('R', '2016-03-17'),('F', '2016-03-18'),('S', '2016-03-19')
  6. ('U', '2016-03-20'),('M', '2016-03-21'),('T', '2016-03-22'),('W', '2016-03-23'),('R', '2016-03-24'),('F', '2016-03-25'),('S', '2016-03-26')
  7. ('U', '2016-03-27'),('M', '2016-03-28'),('T', '2016-03-29'),('W', '2016-03-30'),('R', '2016-03-31'),('F', '2016-04-01'),('S', '2016-04-02')
  8. ('U', '2016-04-03'),('M', '2016-04-04'),('T', '2016-04-05'),('W', '2016-04-06'),('R', '2016-04-07'),('F', '2016-04-08'),('S', '2016-04-09')
  9. ('U', '2016-04-10'),('M', '2016-04-11'),('T', '2016-04-12'),('W', '2016-04-13'),('R', '2016-04-14'),('F', '2016-04-15'),('S', '2016-04-16')
  10. ('U', '2016-04-17'),('M', '2016-04-18'),('T', '2016-04-19'),('W', '2016-04-20'),('R', '2016-04-21'),('F', '2016-04-22'),('S', '2016-04-23')
  11. ('U', '2016-04-24'),('M', '2016-04-25'),('T', '2016-04-26'),('W', '2016-04-27'),('R', '2016-04-28'),('F', '2016-04-29'),('S', '2016-04-30')
  12. ('U', '2016-05-01'),('M', '2016-05-02'),('T', '2016-05-03'),('W', '2016-05-04'),('R', '2016-05-05'),('F', '2016-05-06'),('S', '2016-05-07')
  13. ('U', '2016-05-08'),('M', '2016-05-09'),('T', '2016-05-10'),('W', '2016-05-11'),('R', '2016-05-12'),('F', '2016-05-13'),('S', '2016-05-14')
  14. ('U', '2016-05-15'),('M', '2016-05-16'),('T', '2016-05-17'),('W', '2016-05-18'),('R', '2016-05-19'),('F', '2016-05-20'),('S', '2016-05-21')
  15. ('U', '2016-05-22'),('M', '2016-05-23')
复制代码

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
3 [报告]
发表于 2016-05-23 13:17 |只看该作者
这是要折腾什么?

有 %W 这个参数可以得到周数

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00
4 [报告]
发表于 2016-05-23 13:20 |只看该作者
恩~ 多谢楼上的2位兄弟的,另外一个帖子上发现有现成的模块的:

pandas.date_range('2016-02-23', '2016-05-23', freq='W')

再次感谢

论坛徽章:
0
5 [报告]
发表于 2016-05-23 13:51 |只看该作者
回复 3# haooooaaa

没做过,果然太土了。谢谢教诲!
   

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
6 [报告]
发表于 2016-05-23 13:57 |只看该作者
回复 5# Hadron74


    大神!  我是问楼主, 是我没明白题意。


    回复时也还没看见你的帖子。


   我以为直接要 1 2 3 ... 52 什么的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP