Permalänk
Medlem

datetime i python[LÖST]

Hej!

Jag sitter och försöker bygga en kalender i python och har kört fast vid inläsning av datum. Jag behöver läsa in endast år, månad och dag och INTE tid.

from datetime import date, timedelta import datetime def Datuminlasning(): korrekt=False while not korrekt: inlast = input("Skriv ett datum i formatet dd/mm/yy: \n") try: d = datetime.datetime.strptime(inlast, "%d/%m/%y") korrekt = True except: print ("Fel format, skriv dd/mm/yy \n") return d date = Datuminlasning() print(date) date = date.today() print(date) date = (date - timedelta(days=1)) print(date)

Datuminlasning() kommer att returnera

2014-12-13 00:00:00

dvs den sätter tid till 00:00:00 istället för att ta bort den parametern eller vad man kallar det.

date = date.today() returnerar istället bara

2014-12-13

vilket är det jag behöver

Någon som har några ideer

Visa signatur

ubuntu 16.04

Permalänk
Skrivet av pauq:

Jag behöver läsa in endast år, månad och dag och INTE tid.
[...]

from datetime import date, timedelta import datetime

Jag är för lat för att testa, men om du bara är intresserad av datum så borde väl datetime.date vara enklare än datetime.datetime?

Permalänk
Medlem

Så tänkte jag med men då accepterar den inte formen DD/MM/YY utan hoppar till except

Visa signatur

ubuntu 16.04

Permalänk

Det finns säkert ett Fint, Effektivt, Pythonskt sätt att lösa det på, men jag känner mig varken fin eller effektiv. Here goes:

day, month, year = inlast.split('/') datetime.date(int(year), int(month), int(day))

Permalänk

Sedan vore det bra om programmet bara accepterade datum enligt ISO-8601 och belönade alla andra inmatningsformat med elchocker.

Permalänk

Hej, det är jag igen!

datetime.datetime.strptime('24052010', "%d%m%Y").date() datetime.date(2010, 5, 24)

-- SilentGhost på StackOverflow

Du var ju skitnära den rätta lösningen!

Permalänk
Medlem

där har vi det! Tusen tack

Visa signatur

ubuntu 16.04

Permalänk

Ingen lösning men kul grej: Finns redan kalender i python, kör "python -m calendar" i terminalen. Funkar för python3, tror det är annan syntax för python 2.