Odległa data - za N dni

0

Jak wyliczyć datę za N dni? Jaki to będzie dzień tygodnia?

przyszła_data(700) -> dd / mm/ RRRR i dzień tygodnia ?

0
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
0

Szybko znalazłeś gotowca ;) ach ten Google.

Nie wiem jak sprawdzić dzień tygodnia, czy to będzie czwartek czy niedziela,......

Dzienks!

1
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 ;)

0

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.

1

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.

0

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.

0

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)

1 użytkowników online, w tym zalogowanych: 0, gości: 1