简体   繁体   English

在Python中生成日期到一周中的几天?

[英]Generating dates to the days of a week in Python?

I need to generate a date of Monday of a week from a date (example: 2015/10/22). 我需要从日期(例如:2015/10/22)生成一周中的星期一的日期。 And generate the dates for the next days: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday. 并生成以下日期的日期:星期一,星期二,星期三,星期四,星期五,星期六,星期日。

Example in Java: (initial date = 2015/10/22) Java示例:(初始日期= 2015/10/22)

// Monday: //星期一:

date.set (Calendar.DAY_OF_WEEK, Calendar.MONDAY);

// Add the next day (Tuesday) //添加第二天(星期二)

date.add (Calendar.DATE, 1);

// Add the next day (Wednesday): //添加第二天(星期三):

date.add (Calendar.DATE, 1);

How can I do this in Python? 如何在Python中执行此操作?

Its easier in python using timedelta function 使用timedelta函数在python中更容易

import datetime

mydate = datetime.datetime(2015, 10, 22, 00, 00, 00, 00)
mymondaydate = mydate - datetime.timedelta(days=mydate.weekday())
mytuesdaydate = mymondaydate + datetime.timedelta(days=1)

print(mydate)
print(mymondaydate)
print(mytuesdaydate)

The trick is the use of weekday() function. 诀窍是使用weekday()函数。 From documentation 从文档

date.weekday() - Return the day of the week as an integer, where Monday is 0 and Sunday is 6. date.weekday()-以整数返回星期几,其中星期一为0,星期日为6。

So subtracting it from current date gives the date of Monday of that week 因此,从当前日期减去它得出的是该周的星期一的日期

You can set your initial date like this: 您可以这样设置初始日期:

from datetime import datetime, timedelta    
d = datetime(2015,10,22)

Then if you want to get the next monday, use timedelta and datetime.weekday() (Monday is 0): 然后,如果要获取下一个星期一,请使用timedelta和datetime.weekday()(星期一为0):

d + timedelta(7 - d.weekday())
datetime.datetime(2015, 10, 26, 0, 0)

Provide another version for your question. 为您的问题提供另一个版本。 You can refer the document of official site: datetime , time 您可以参考官方网站的文件: datetimetime

from datetime import date
from datetime import timedelta
import time

t = time.strptime('2015/10/22', '%Y/%m/%d')
old_day = date.fromtimestamp(time.mktime(t))
a_day = timedelta(days=1)
new_day = old_day + a_day

print new_day.strftime('%a')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM