Belirli bir tarihte, 2011-07-02 tarihine kadar, bu tarihten sonraki bir sonraki Pazartesi gününü (veya bu konuya ait herhangi bir hafta içi gününü) nasıl bulabilirim?Belirli bir tarihten sonra ilk Pazartesi günü için tarihi bul
cevap
import datetime
def next_weekday(d, weekday):
days_ahead = weekday - d.weekday()
if days_ahead <= 0: # Target day already happened this week
days_ahead += 7
return d + datetime.timedelta(days_ahead)
d = datetime.date(2011, 7, 2)
next_monday = next_weekday(d, 0) # 0 = Monday, 1=Tuesday, 2=Wednesday...
print(next_monday)
sonraki Pazartesi 7 günü Pazartesi sonra 6 günü salı sonra, vb, ve ayrıca kullanarak olduğuna kullanılarak
>>> dt = datetime(2011, 7, 2)
>>> dt + timedelta(days=(7 - dt.weekday()))
datetime.datetime(2011, 7, 4, 0, 0)
deneyin o Python'un datetime
türü raporları Pazartesi olarak 0
, ..., Pazar olarak 6
.
hile yapmak gerektiğini düşünüyorum - Bu datetime (2013, 1, 1) "datetime (2013, 1) ile yaklaşan Pazar bulmaya çalıştığınızda , 1) + timedelta (gün = (7 - datetime (2013, 1, 1) .weekday())) "," datetime.datetime (2013, 1, 7, 0, 0) "olsun, bir pazartesi . – fixxxer
@fixxxer - Yanıtda da belirttiği gibi: kod, "datetime" API'sinin birkaç özelliğini, yalnızca pazartesi günleri arıyorsanız, yalnızca çalışacak şekilde kullanır. "Phihag" tarafından sağlanan kod daha geneldir ve yaklaşan herhangi bir günü bulabilir. – Dirk
Timedelta'da 7 yerine 6'nın kullanılmasına yardımcı olacağını düşünüyor musunuz? – fixxxer
Tarihe bir gün eklemeye başlayabilir ve pazartesi günlerinde durabilirsiniz.
>>> d = datetime.date(2011, 7, 2)
>>> while d.weekday() != 0: #0 for monday
... d += datetime.timedelta(days=1)
...
>>> d
datetime.date(2011, 7, 4)
bu ilk sonraki Pazartesi günü, sonra verilen tarih verecektir:
import datetime
def get_next_monday(year, month, day):
date0 = datetime.date(year, month, day)
next_monday = date0 + datetime.timedelta(7 - date0.weekday() or 7)
return next_monday
print get_next_monday(2011, 7, 2)
print get_next_monday(2015, 8, 31)
print get_next_monday(2015, 9, 1)
2011-07-04
2015-09-07
2015-09-07
listesi ile anlama?
from datetime import *
[datetime.today()+timedelta(days=x) for x in range(0,7) if (datetime.today()+timedelta(days=x)).weekday() % 7 == 0]
(0 at the end is for next monday, returns current date when run on monday)
weekday = 0 ## Monday
dt = datetime.datetime.now().replace(hour=0, minute=0, second=0) ## or any specific date
days_remaining = (weekday - dt.weekday() - 1) % 7 + 1
next_dt = dt + datetime.timedelta(days_remaining)
Burada biraz üzerinde ağır cevaplara bir öz ve jenerik bir alternatiftir.
# Returns the date of the next given weekday after
# the given date. For example, the date of next Monday.
onDay = lambda date, day: date + datetime.timedelta(days=(day-date.weekday()+7)%7)
Bu cevap upvotes toplamak için çok geç geldi, ama benim favorim. – ASalazar
Son derece temiz, oy hakkım var. – Liquidgenius
Bir diğer basit ve zarif çözüm pandas ofsetlerini kullanmaktır.
Tarihleri ile oynarken çok yararlı ve sağlam buluyorum.
- İlk Pazar gününü istiyorsanız, frekansı frek = 'W-SUN' olarak değiştirin.
- Birkaç sonraki Pazar gününü isterseniz, ofsetleri değiştirin. Gün (gün).
- Pandalar ofsetlerini kullanmak, tatil günlerini görmezden gelmenizi, yalnızca İş Günleri ve daha fazlası ile çalışmanızı sağlar.
Ayrıca, bu yöntemi uygulama yöntemini kullanarak tüm DataFrame'e kolayca uygulayabilirsiniz.
# Getting the closest monday from a given date
closest_monday = pd.date_range(start=date, end=date + offsets.Day(6), freq='W-MON')[0]
# Adding a 'ClosestMonday' column with the closest monday for each row in a pandas df using apply
# Require you to have a 'Date' column in your df
def get_closest_monday(row):
return pd.date_range(start=row.Date, end=row.Date + offsets.Day(6), freq='W-MON')[0]
df['ClosestMonday'] = df.apply(lambda row: get_closest_monday(row), axis=1)
import datetime
d = datetime.date(2011, 7, 2)
while d.weekday() != 0:
d += datetime.timedelta(1)
- 1. Bu Haftaları Bul Pazartesi
- 2. Haftalık günlüğüm pazartesi yerine pazartesi günü başlıyor
- 3. 1 AD'den bir pazartesi günü başlayacak ilk yıl kaçtır?
- 4. Biçim tarihi haftanın günü olarak
- 5. Datepicker Angularjs startWeek pazartesi günü
- 6. Haftanın ilk günü hangi günü nasıl değiştirebilirim?
- 7. PHP kullanarak bir tarihten sonraki hafta günü nasıl bulunur?
- 8. Pazartesi
- 9. Bir ayın 4 pazartesi günü js ile nasıl edinilir?
- 10. OneDrive API: pazartesi günü çekilen fotoğrafları alın
- 11. iOS'ta ilk hafta günü nasıl belirlenir?
- 12. Belirli bir tarihin haftanın ilk günü nasıl bulunur?
- 13. Haftanın ilk günü, Locale'ye dayanan haftanın ilk gününü alma Moment
- 14. Dönüştürme tarihi günü (05/12/2011 - 12th)
- 15. Her Pazartesi günü Alarmları tekrarlayın usig AlarmManager/BroadcastReceiver
- 16. Bir sorguda en yakın tarihi bul
- 17. Listeden en yakın tarihi bul
- 18. Belirli bir tarihten itibaren X sayısının çıktısını Javascript'te çıkartarak bulma tarihi
- 19. Belirli bir tarihten sonra sayfa için eksik fan verisini kullanarak Facebook Graph API
- 20. jQuery Tarih seçici yalnızca pazartesi günleri seçmek için:
- 21. GWT DatePicker, haftanın ilk günü olarak Pazartesi'yi nasıl kullanır?
- 22. jquery ilk öğeyi bulmak için bul
- 23. VBA'da bir tarihten nasıl çıkarılmalı?
- 24. Belirli bir ayda ve son bir yılın sonuncusunun ismini bul
- 25. Belirli bir tarihten önce bir versiyonun SourceSafe projesi nasıl alınır?
- 26. RoboMongo koleksiyonundaki belirli dokümanları bul
- 27. Haftanın başlangıcı (Pazartesi) - Sorgu yanlış bir tarih veriyor
- 28. DateTime, geçerli yılın ilk günü için dize değiştir
- 29. MeteorJS: koleksiyonda ilk öğeyi bul
- 30. En son veya en erken tarihi bul
http://docs.python.org/library/datetime.html#datetime.date.weekday Ayrıca yapabilirdi –