196 Stimmen

Jahr/Monat/Tag in Tag des Jahres in Python umrechnen

Ich benutze die datetime Modul, d.h.:

>>> import datetime
>>> today = datetime.datetime.now()
>>> print(today)
2009-03-06 13:24:58.857946

und ich möchte den Tag des Jahres berechnen, der die Schaltjahre berücksichtigt. z.B. ist heute (6. März 2009) der 65. Tag des Jahres 2009.

Ich sehe zwei Möglichkeiten:

  1. Erstellen einer number_of_days_in_month = [31, 28, ...] Array, entscheiden Sie, ob es sich um ein Schaltjahr handelt, und addieren Sie die Tage manuell.

  2. Utilice datetime.timedelta um eine Vermutung anzustellen und dann binär nach dem richtigen Tag des Jahres zu suchen:

    >>> import datetime
    >>> YEAR = 2009
    >>> DAY_OF_YEAR = 62
    >>> d = datetime.date(YEAR, 1, 1) + datetime.timedelta(DAY_OF_YEAR - 1)

Diese beiden fühlen sich ziemlich klobig & Ich habe ein Bauchgefühl, dass es eine mehr "Pythonic" Weg zur Berechnung der Tag des Jahres. Irgendwelche Ideen/Vorschläge?

5voto

zweiterlinde Punkte 13917

Ziehen Sie einfach den 1. Januar vom Datum ab:

import datetime
today = datetime.datetime.now()
day_of_year = (today - datetime.datetime(today.year, 1, 1)).days + 1

2voto

Vinay Singh Punkte 11

Sie können einfach Folgendes verwenden dayofyear Attribut, das von "pandas" bereitgestellt wird, das wiederum den Tag des Jahres für ein bestimmtes Jahr angibt. z.B..

data["day_of_year"] = data.Datetime.apply(lambda x:x.dayofyear)

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