916 Stimmen

Wie kann ich den Wochentag eines Datums ermitteln?

Ich möchte Folgendes herausfinden: Angesichts eines Datums ( datetime Objekt), was ist der entsprechende Wochentag?

Zum Beispiel: Sonntag ist der erste Tag, Montag der zweite Tag und so weiter.

Und dann, wenn die Eingabe etwas wie das heutige Datum ist.

>>> today = datetime.datetime(2017, 10, 20)
>>> today.get_weekday()  # what I look for

Die Ausgabe ist vielleicht 6 (da heute Freitag ist)

36voto

Eine Lösung ohne Importe für Daten nach dem 1700/1/1

def weekDay(year, month, day):
    offset = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
    week   = ['Sunday', 
              'Monday', 
              'Tuesday', 
              'Wednesday', 
              'Thursday',  
              'Friday', 
              'Saturday']
    afterFeb = 1
    if month > 2: afterFeb = 0
    aux = year - 1700 - afterFeb
    # dayOfWeek for 1700/1/1 = 5, Friday
    dayOfWeek  = 5
    # partial sum of days betweem current date and 1700/1/1
    dayOfWeek += (aux + afterFeb) * 365                  
    # leap year correction    
    dayOfWeek += aux / 4 - aux / 100 + (aux + 100) / 400     
    # sum monthly and day offsets
    dayOfWeek += offset[month - 1] + (day - 1)               
    dayOfWeek %= 7
    return dayOfWeek, week[dayOfWeek]

print weekDay(2013, 6, 15) == (6, 'Saturday')
print weekDay(1969, 7, 20) == (0, 'Sunday')
print weekDay(1945, 4, 30) == (1, 'Monday')
print weekDay(1900, 1, 1)  == (1, 'Monday')
print weekDay(1789, 7, 14) == (2, 'Tuesday')

19voto

Vlad Bezden Punkte 71128

Wenn Sie Daten als String haben, könnte es einfacher sein, es mit Pandas' Timestamp zu tun

import pandas as pd
df = pd.Timestamp("2019-04-12")
print(df.dayofweek, df.weekday_name)

Ausgabe:

4 Friday

15voto

F.E.A Punkte 151

Hier ist ein einfaches Codeschnipsel zur Lösung dieses Problems

import datetime

intDay = datetime.date(year=2000, month=12, day=1).weekday()
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(days[intDay])

Die Ausgabe sollte sein:

Friday

12voto

Rodrigo Punkte 145

Dies ist eine Lösung, wenn das Datum ein datetime-Objekt ist.

import datetime
def dow(date):
    days=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    dayNumber=date.weekday()
    print days[dayNumber]

10voto

Shiv948 Punkte 429

Sagen wir, Sie haben Zeitstempel: String-Variable, JJJJ-MM-TT HH:MM:SS

Stufe 1 : Konvertieren in dateTime Funktion mit Blow Code...

df['timeStamp'] = pd.to_datetime(df['timeStamp'])

Schritt 2 : Jetzt können Sie alle erforderlichen Merkmale wie unten dargestellt extrahieren, wodurch eine neue Spalte für jedes der Merkmale - Stunde, Monat, Wochentag, Jahr, Datum - erstellt wird.

df['Hour'] = df['timeStamp'].apply(lambda time: time.hour)
df['Month'] = df['timeStamp'].apply(lambda time: time.month)
df['Day of Week'] = df['timeStamp'].apply(lambda time: time.dayofweek)
df['Year'] = df['timeStamp'].apply(lambda t: t.year)
df['Date'] = df['timeStamp'].apply(lambda t: t.day)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X