Jak wyliczyć datę za N dni? Jaki to będzie dzień tygodnia?
przyszła_data(700) -> dd / mm/ RRRR i dzień tygodnia ?
Jak wyliczyć datę za N dni? Jaki to będzie dzień tygodnia?
przyszła_data(700) -> dd / mm/ RRRR i dzień tygodnia ?
import datetime
def get_date(dateFormat="%d-%m-%Y", addDays=0):
timeNow = datetime.datetime.now()
if (addDays!=0):
anotherTime = timeNow + datetime.timedelta(days=addDays)
else:
anotherTime = timeNow
return anotherTime.strftime(dateFormat)
addDays = 3
output_format = '%d-%m-%Y'
output = get_date(output_format, addDays)
print output
Szybko znalazłeś gotowca ;) ach ten Google.
Nie wiem jak sprawdzić dzień tygodnia, czy to będzie czwartek czy niedziela,......
Dzienks!
require "date"
dayOfWeek = {0=>"Sunday", 1=>"Monday", 2=>"Tuesday", 3=>"Wednesday", 4=>"Thursday", 5=>"Friday", 6=>"Saturday"}
counter = 7
date = Date.new(2015, 12, 16)
date2 = date + counter
whichDay = dayOfWeek[date2.wday]
puts Kernel::sprintf("%s it will be %s", date2, whichDay)
To co prawda Ruby, ale wypisuje słownie dzień tygodnia do przodu albo do tyłu o ilość dni podaną w "counter" od daty podanej w "date". I to nie jest gotowiec z internetu jak tego pana powyżej tylko mój własny program ;)
Oj nie wierze, bo liczysz tydzień od niedzieli, wiec to chyba też "gotowiec" z sieci.
Tak myślę, że można chyba podzielić liczbę dni przez 7 i mając różnice z dzielenia plus ile dni brakuje od dziś do poniedziałku wyliczyć dzień tygodnia.
To podaj mi strone na której to znalazłeś gotowe w sieci. A najlepiej zobacz sobie jak wygląda standardowa funkcja "wday" i spróbuj jej użyć tak żeby liczyła 0 jako poniedziałek, będe naprawde zadziwiony jak ci się to uda.
Można to zrobić w ten sposób, że jeżeli liczysz dni od 1 i wiesz, że 1 to poniedziałek, no to 8 dzień z kolei znowu będzie poniedziałkiem, później 15, 22, 29, 36, 43 i tak dalej. Na tej podstawie można użyć reszty z dzielenia. Jeżeli reszta z dzielenia przez 7 mieści się w przedziale np. od 0,13 do 0,15 to masz poniedziałek, jeżeli mieści się w przedziale 0,27-0,29 to masz wtorek, 0,41-0,43 to masz środę itd. A jeżeli wynosi 0, to masz dzień poprzedni, czyli niedzielę.
Edit: Dzięki za poprawkę, wszelkie uwagi zawsze mile widziane. Nie wiem dlaczego tak mi się wbiło do głowy, wydaje mi się, że w kalendarzach widywałem z dużej litery.
Twój kod po dodaniu listy dni (oczywiście może być po angielsku i pełne nazwy, chodziło tylko o wskazanie o co chodzi) i zwracanie tuple'a, w którym siedzi ten dzień tygodnia:
import datetime
def get_date(dateFormat="%d-%m-%Y", addDays=0):
days = ["pon", "wt", "sr", "czw", "pt", "so", "nd"]
timeNow = datetime.datetime.now()
if (addDays!=0):
anotherTime = timeNow + datetime.timedelta(days=addDays)
else:
anotherTime = timeNow
return (anotherTime.strftime(dateFormat), days[anotherTime.weekday()])
addDays = 3
output_format = '%d-%m-%Y'
output = get_date(output_format, addDays)
print(output)