Slides Thema 4

Datum und Zeit

◀️ Thema 4

⚡Anwesenheit bestätigen

📖 Kapitel 6 Datum und Zeit


Lernziele

Ich kann ...

  • Datum und Uhrzeit in einer Variable speichern.
  • erklären wie der Computer die Zeit speichert.
  • Datum und Uhrzeit in einem bestimmten Format ausgeben.
  • Zeitdifferenzen in Stunde, Tagen und Jahren berechnen.

Timestamp

🤔 Wie speichert bzw. weiss der Computer die aktuelle Uhrzeit?

🙋 https://www.unixtimestamp.com/open in new window


IDE vorbereiten

🎬 Führen Sie diese Aktionen aus:

  • Neuer Ordner Thema4 erstellen
  • Neue Datei Datum und Zeit.py erstellen

Aktuelles Datum und Uhrzeit

🎬 Das aktuelle Datum und Uhrzeit ausgeben.

from datetime import datetime # Neue Funktionen aus der Python-Bibliothek
now = datetime.now()
print(now) # Ausgabe: YYYY-MM-DD HH:MM:SS

Unix Timestamp ausgeben

🎬 Anzahl Sekunden seit 01.01.1970 ausgeben.

print(now.timestamp())

ℹ️ Im Jahr 2038 haben 32-Bit Computer ein Problem.


Jahr 2038

Wann haben 32-Bit Computer ein Problem?

from datetime import datetime
sekunden = int(datetime.now().timestamp())
sekunden_binär = bin(sekunden)
anzahl_bits = len(str(sekunden_binär))-2 # Ist 31

print(f'Maximales Datum: {2**anzahl_bits}')

Output eingeben unter: https://www.unixtimestamp.com/open in new window

ℹ️ Mehr dazu https://de.wikipedia.org/wiki/Unixzeit#Jahr-2038-Problemopen in new window.


Einzelne Zeitkomponten ausgeben

🎬 Jahr oder Monat ausgeben.

print(now.year)
print(now.month)

Datum und Zeit formatieren

🎬 Datum und Zeit können formatiert werden.

print(now.isoformat())
print(now.strftime('%d.%m.%Y %H:%M'))

ℹ️ Dateinamen am besten mit ISO-Format bennen. Dann stimmt die Sortierung.


Eigenes Datumsformat

Liste der Platzhalter: https://docs.python.org/3/library/time.html#time.strftimeopen in new window

🎬 Erstellen Sie eine eigene Formatierung.

print(now.strftime('%A, %d. %B %Y'))

Datum und Zeit lokalisieren

🎬 Ausgabe in der lokalen Sprache.

import locale  
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')  # Linux    
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8') # macOS  
locale.setlocale(locale.LC_ALL, 'german')      # Windows  

from datetime import datetime
print(datetime.now.strftime('%A, %d. %B %Y'))

Datum aus String lesen

🎬 Bei der Eingabe eines Datum ist das Format entscheidend.

from datetime import datetime
s = '2018-08-01 18:47'  
dt = datetime.strptime(s, '%Y-%m-%d %H:%M')
print(dt)

Datum ohne Zeit

Wir haben keine Zeit.

from datetime import date
print(date.today())

ℹ️ Wir importieren date und verwendent today.


Zeit ohne Datum

Wir haben kein Datum.

from datetime import datetime
print(datetime.now().time())

Mit Zeiten rechnen

🎬 Mit timedelta können Sie Zeit dazu rechnen.

from datetime import datetime, timedelta
today = datetime.now()
week = timedelta(weeks=1)
print(today)
print(week)
print(today + week)

Zeitdifferenz berechnen

🎬 Verwendet man today() kann die Differenz in Tagen berechnen.

from datetime import date, timedelta  
today = date.today()  
weihnachten = date(today.year, 12, 24)  
warten = weihnachten - today  
print('Noch', warten.days, 'Tage bis Weihnachten.')

Aufgaben 1

Lösen Sie die ersten zwei Aufgaben 4.1 und 4.2.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Zeitzonen

Wir leben in verschiedenen Zeitzonen.


Datum UTC

🎬 Wir geben das Datum in der Zeitzone Coordinated Universal Time (UTC) aus.

from datetime import datetime  
import pytz  
utc = datetime.now(pytz.utc)  
print(utc)

ℹ️ Wenn pytz in Bibliothek nicht vorhanden ist, kann man pip install pytz auf der Kommandozeile ausführen.


Datum bestimmte Zeitzone

🎬 Wir können ein Datum einer bestimmten Zeitzone zuordnen.

berlin = pytz.timezone('Europe/Berlin')
berlintime = berlin.localize(datetime.now())
print(berlintime)

Laufzeit von Code messen

Wie lange braucht der Computer für eine Berechnung?

🎬 Führen Sie dieses Programm aus.

import time, math
start = time.process_time()

# Sinnlos Zeit totschlagen  
for i in range(1, 1000000):    
  x=math.sin(i)

end = time.process_time()    
print(end - start, 'Sekunden')

ℹ️ Mit import math erhalten Sie Zugriff auf mathematische Funktionen.


Laufzeit der Programmausführung messen

Wie lange wird das Programm ausgeführt?

🎬 Führen Sie dieses Programm aus.

from datetime import datetime
start = int(datetime.now().timestamp())

s = input()

end = int(datetime.now().timestamp())
print(end - start, 'Sekunden')

Aufgaben 2

Lösen Sie die restlichen Aufgaben.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Review

🎯 Wurden die Lernziele erreicht?

⚡ Feedback zu den Zielen einholen.