

Bild von Autor | Chatgpt
Einführung
Python’s eingebaut datetime Das Modul kann leicht als Bibliothek für den Umgang mit Datum und Zeitformatierung und Manipulation im Ökosystem angesehen werden. Die meisten Python -Codierer sind mit dem Erstellen vertraut datetime Objekte, formatieren sie in Saiten und führen grundlegende Arithmetik aus. Dieses leistungsstarke Modul, manchmal neben verwandten Bibliotheken wie z. B. calendarbietet eine Tonne mehr Funktionen über die Grundlagen hinaus, die das komplexe Datum und zeitbezogene Probleme mit überraschender Leichtigkeit lösen können.
Dieser Artikel befasst sich mit 10 nützlichen – und vielleicht überraschenden – Dingen, die Sie mit Python erreichen können datetime Modul. Diese Beispiele zeigen die Vielseitigkeit des Datums- und Uhrzeit -Toolkits von Python, von Zeitzonen bis zur Berechnung spezifischer Ereignisse an Wochentagen.
1. Wochentag finden
Abgesehen davon, dass Sie nur das Datum kennen, müssen Sie oft den Wochentag kennen. Der datetime Das Modul macht dieses trivial. Jeder datetime Objekt hat a weekday() Methode, die den Wochentag als Ganzzahl zurückgibt (Montag ist 0, Sonntag 6) und a strftime() Methode, die das Datum formatieren kann, um den Namen des ganzen Tages anzuzeigen.
import datetime
# Decide a date
at the moment = datetime.date(2025, 7, 10)
# Get the day of the week (Monday is 0)
day_of_week_num = at the moment.weekday()
print(f"Day of the week (numeric): {day_of_week_num}")
# Get the total title of the day
day_name = some_date.strftime("%A")
print(f"The date {at the moment} is a {day_name}")
Ausgabe:
The date 2025-07-10 is a Thursday
2. Berechnen Sie die Zeit bis zu einem zukünftigen Ereignis
Benötigte jemals einen einfachen Countdown -Timer? Mit datetimeSie können die verbleibende Zeit bis zu einem bestimmten zukünftigen Datum und Uhrzeit problemlos berechnen. Durch Subtrahieren des Stroms datetime Von einem zukünftigen bekommen Sie eine timedelta Objekt, das den Unterschied darstellt.
import datetime
# Outline a future occasion
new_year_2050 = datetime.datetime(2050, 1, 1, 0, 0, 0)
# Get the present time
now = datetime.datetime.now()
# Calculate the distinction
time_left = new_year_2050 - now
print(f"Time left till New 12 months 2050: {time_left}")
Ausgabe:
Time left till New 12 months 2050: 8940 days, 16:05:52.120836
3.. Mit Timezones arbeiten
Timezones zu handhaben ist schwierig. A naiv datetime Objekt hat keine Zeitzonendaten, während eine bewusst Das Objekt besitzt diese Daten. Verwenden der pytz Bibliothek (oder die eingebaute zoneinfo In Python 3.9+) macht die Arbeit mit TimeZones überschaubar.
Zum Beispiel können Sie One Timezone -Zeit als Foundation für die Konvertierung in eine andere Zeitzone wie diese nutzen:
import datetime
from pytz import timezone
# Create a timezone-aware datetime for New York
nyc_tz = timezone('America/New_York')
nyc_time = datetime.datetime.now(nyc_tz)
print(f"New York Time: {nyc_time}")
# Convert it to a different timezone
london_tz = timezone('Europe/London')
london_time = nyc_time.astimezone(london_tz)
print(f"London Time: {london_time}")
Ausgabe:
New York Time: 2025-07-10 07:57:53.900220-04:00
London Time: 2025-07-10 12:57:53.900220+01:00
4.. Erhalten Sie den letzten Tag eines Monats
Der letzte Tag eines Monats zu ermitteln, ist nicht einfach, seit Monaten eine unterschiedliche Anzahl von Tagen haben. Sie könnten Logik schreiben, um 30/31 Tage zusammen mit Februar zu verarbeiten (vergessen Sie nicht Jahre!) Oder Sie könnten einen cleveren Trick mit verwenden datetime Und timedelta. Die Strategie besteht darin, den ersten Tag der zu finden nächste Monat und dann eines Tages subtrahieren.
import datetime
def get_last_day_of_month(yr, month):
# Deal with month rollover for December -> January
if month == 12:
next_month_first_day = datetime.date(yr + 1, 1, 1)
else:
next_month_first_day = datetime.date(yr, month + 1, 1)
# Subtract someday to get the final day of the present month
return next_month_first_day - datetime.timedelta(days=1)
# Instance: Get the final day of February 2024 (a intercalary year)
last_day = get_last_day_of_month(2024, 2)
print(f"The final day of February 2024 is: {last_day}")
Ausgabe:
The final day of February 2024 is: 2024-02-29
5. Berechnen Sie Ihr präzises Alter
Sie können verwenden datetime jemandes Alter bis zum Tag berechnen. Die Logik umfasst das Subtrahieren des Geburtsdatums vom aktuellen Datum und dann eine kleine Anpassung, um zu berücksichtigen, ob der Geburtstag der Particular person in diesem Jahr noch stattgefunden hat.
import datetime
def calculate_age(birthdate):
at the moment = datetime.date.at the moment()
age = at the moment.yr - birthdate.yr - ((at the moment.month, at the moment.day) < (birthdate.month, birthdate.day))
return age
# Instance utilization
picasso_birthdate = datetime.date(1881, 10, 25)
picasso_age = calculate_age(picasso_birthdate)
print(f"If alive at the moment, Pablo Picasso could be {picasso_age} years previous.")
Ausgabe:
If alive at the moment, Pablo Picasso could be 143 years previous.
6. Iteriert durch eine Reihe von Daten
Manchmal müssen Sie einen Betrieb für jeden Tag innerhalb eines bestimmten Datumsbereichs ausführen. Sie können leicht Daten durchlaufen, indem Sie mit einem Datumsobjekt beginnen und wiederholt a hinzufügen timedelta von einem Tag bis Sie das Enddatum erreichen.
import datetime
start_date = datetime.date(2025, 1, 1)
end_date = datetime.date(2025, 1, 7)
day_delta = datetime.timedelta(days=1)
current_date = start_date
whereas current_date <= end_date:
print(current_date.strftime('%Y-%m-%d, %A'))
current_date += day_delta
Ausgabe:
2025-01-01, Wednesday
2025-01-02, Thursday
2025-01-03, Friday
2025-01-04, Saturday
2025-01-05, Sunday
2025-01-06, Monday
2025-01-07, Tuesday
7. Parsendaten aus nicht standardmäßigen Stringformaten
Der strptime() Die Funktion ist nützlich, um Zeichenfolgen in die Konvertierung zu datetime Objekte. Es ist unglaublich flexibel und kann eine Vielzahl von Formaten durch Verwendung spezifischer Formatcodes bewältigen. Dies ist wichtig, wenn Sie mit Daten aus verschiedenen Quellen umgehen, die möglicherweise kein Normal -ISO -Format verwenden.
import datetime
date_string_1 = "July 4, 1776"
date_string_2 = "1867-07-01 14:30:00"
# Parse the primary string format
dt_object_1 = datetime.datetime.strptime(date_string_1, "%B %d, %Y")
print(f"Parsed object 1: {dt_object_1}")
# Parse the second string format
dt_object_2 = datetime.datetime.strptime(date_string_2, "%Y-%m-%d %H:%M:%S")
print(f"Parsed object 2: {dt_object_2}")
Ausgabe:
Parsed object 1: 1776-07-04 00:00:00
Parsed object 2: 1867-07-01 14:30:00
8. Finden Sie den n -ten Wochentag eines Monats
Möchten Sie das Datum des dritten Donnerstags im November kennen? Der calendar Modul kann neben datetime dies zu lösen. Der monthcalendar() Funktion gibt eine Matrix zurück, die die Wochen eines Monats darstellt, die Sie dann analysieren können.
import calendar
# calendar.weekday() Monday is 0 and Sunday is 6
# calendar.Thursday is 3
cal = calendar.Calendar()
# Get a matrix of weeks for November 2025
month_matrix = cal.monthdatescalendar(2025, 11)
# Discover the third Thursday
third_thursday = (week(calendar.THURSDAY) for week in month_matrix if week(calendar.THURSDAY).month == 11)(2)
print(f"The third Thursday of Nov 2025 is: {third_thursday}")
Ausgabe:
The third Thursday of Nov 2025 is: 2025-11-20
9. Die ISO -Woche -Nummer erhalten
Der ISO 8601 Normal definiert ein System für die Woche, in dem eine Woche an einem Montag beginnt. Der isocalendar() Die Methode gibt ein Tupel mit ISO -Jahr, Wochennummer und Wochentag für einen bestimmten Datum zurück.
Beachten Sie, dass der folgende Datum ein Donnerstag ist und daher zu einem Tag der 4. Woche führen sollte. Es sollte auch die 28. Woche des Jahres sein.
import datetime
d = datetime.date(2025, 7, 10)
iso_cal = d.isocalendar()
print(f"Date: {d}")
print(f"ISO 12 months: {iso_cal(0)}")
print(f"ISO Week Quantity: {iso_cal(1)}")
print(f"ISO Weekday: {iso_cal(2)}")
Ausgabe:
Date: 2025-07-10
ISO 12 months: 2025
ISO Week Quantity: 28
ISO Weekday: 4
10. Werktage hinzufügen oder abziehen
Die Berechnung zukünftiger Daten während des Überspringens von Wochenenden ist eine häufige Geschäftsanforderung. Während datetime Dafür hat keine integrierte Funktion timedelta und die weekday() Verfahren.
import datetime
def add_business_days(start_date, num_days):
current_date = start_date
whereas num_days > 0:
current_date += datetime.timedelta(days=1)
# weekday() returns 5 for Saturday and 6 for Sunday
if current_date.weekday() < 5:
num_days -= 1
return current_date
begin = datetime.date(2025, 7, 10) # A Thursday
finish = add_business_days(begin, 13)
print(f"13 enterprise days after {begin} is {finish}")
13 enterprise days after 2025-07-10 is 2025-07-29
Einpacken
Python datetime Das Modul ist mehr als nur ein einfaches Werkzeug zum Speichern von Daten. Es bietet eine versatile und nützliche Menge von Instruments zum Umgang mit quick jeder zeitbezogenen Logik. Durch das Verständnis seiner Kernkomponenten – dateAnwesend timeAnwesend datetimeUnd timedelta – und sie mit dem kombinieren calendar Modul oder externe Bibliotheken mögen pytzSie können komplexe reale Probleme effizient und genau lösen.
Vergessen Sie nicht, das zu überprüfen datetime Modul Dokumentation Für mehr. Sie könnten überrascht sein, was Sie erreichen können.
Matthew Mayo (@Mattmayo13) hat einen Grasp -Abschluss in Informatik und ein Diplom in Information Mining. Als Geschäftsführer von Kdnuggets & Statologieund beitragen Redakteur bei Meisterschaft für maschinelles LernenMatthew zielt darauf ab, komplexe Datenwissenschaftskonzepte zugänglich zu machen. Zu seinen beruflichen Interessen zählen natürliche Sprachverarbeitung, Sprachmodelle, Algorithmen für maschinelles Lernen und die Erforschung der aufstrebenden KI. Er ist von der Mission getrieben, das Wissen in der Datenwissenschaftsgemeinschaft zu demokratisieren. Matthew kodiert seit seinem 6 -jährigen Lebensjahr.
