Seite 1 von 1
Variable mit aktueller Tageszeit
Verfasst: Samstag 15. August 2020, 12:11
von Hartmannsgruber
Servus Forum,
eine ganz einfache Frage.
gibt es eine Möglichkeit, die aktuelle Zeit in eine Variable zu schreiben.
Diese Variable sollte aber nicht die Zeit aufweisen in der Sie "geschaffen" wird,
sondern immer aktuell sein.
Über datetime gibt es ja die Funktion datetime.now()
Ist es z.B. möglich diesen Wert in eine Variable zu schreiben, so das dieser immer
die gerade im Moment aktuelle Zeit beinhaltet?
Die Frage stellt sich, da es immer sehr viel "Tipparbeit" ist, bis man immer
"datetime.now().strftime("%H:%M")" geschrieben hat.
LG
Benjamin
Re: Variable mit aktueller Tageszeit
Verfasst: Samstag 15. August 2020, 12:32
von ganja
Hallo,
ich bin ein Anfänger aber ich glaube ja.
now = date time.now()
aktuelle_zeit = (now.strftime("%H:%M"))
#so in der art
print (aktuelle_zeit)
Re: Variable mit aktueller Tageszeit
Verfasst: Samstag 15. August 2020, 13:03
von snafu
Du könntest eine Art Alias erreichen, wenn du einen kurzen Funktionsnamen benutzt:
Aufgerufen werden muss es aber dennoch, da sich die Zeit sonst nicht aktualisiert.
Re: Variable mit aktueller Tageszeit
Verfasst: Samstag 15. August 2020, 13:12
von __blackjack__
Wobei ich da schon einen sprechenden Namen verwenden würde, denn bei `now()` erwartet man eigentlich Datum + Uhrzeit und auch eher als `datetime`-Objekt und nicht als Zeichenkette. Also `get_current_time_as_string()`. Ja, das ist auch lang, aber *ein* Name, der ja mit Autovervollständigung schnell eingegeben ist. Aber der Leser weiss dann was er da zu erwarten hat.
Re: Variable mit aktueller Tageszeit
Verfasst: Samstag 15. August 2020, 17:10
von pillmuncher
Was __blackjack__ gesagt hat.
Bitte nicht nachmachen:
Code: Alles auswählen
#!/usr/bin/env python3
# coding: utf-8
def _install_my_magic_module():
import sys
import datetime
from importlib.abc import MetaPathFinder, Loader
from importlib.machinery import ModuleSpec
from types import ModuleType
class MyMagicModule(ModuleType):
__all__ = ['now']
__file__ = None
now = property(lambda _: datetime.datetime.now())
class MyMagicImporter(MetaPathFinder, Loader):
def find_spec(self, fullname, path=None, target=None):
if fullname == 'my_magic_module':
return ModuleSpec(fullname, self)
def create_module(self, spec):
return sys.modules.setdefault(spec.name, MyMagicModule(spec.name))
def exec_module(self, module):
pass
sys.meta_path.insert(0, MyMagicImporter())
_install_my_magic_module()
def main():
import time
import my_magic_module
print(my_magic_module.now)
time.sleep(1)
print(my_magic_module.now)
time.sleep(1)
print(my_magic_module.now)
time.sleep(1)
print(my_magic_module.now)
time.sleep(1)
print(my_magic_module.now)
if __name__ == '__main__':
main()
Ergebnis:
Code: Alles auswählen
2020-08-15 18:06:12.168319
2020-08-15 18:06:13.169441
2020-08-15 18:06:14.170622
2020-08-15 18:06:15.171900
2020-08-15 18:06:16.173183
Re: Variable mit aktueller Tageszeit
Verfasst: Samstag 15. August 2020, 18:35
von Sirius3
@pillmuncher: dann hast Du aber keine Variable, sondern ein Property, das immer über ein Objekt angesprochen werden muß.
Besser wäre eine Klasse mit __str__-Methode:
Code: Alles auswählen
from datetime import datetime as DateTime
class CurrentTime:
def __str__(self):
return f"{DateTime.now():%H:%M}"
current_time = CurrentTime()
print(current_time)
jetzt = f"Jetzt ist {current_time}Uhr"
Verhält sich wie ein Objekt, das wenn man es in einen String umwandelt, die aktuelle Uhrzeit ergibt.
Re: Variable mit aktueller Tageszeit
Verfasst: Montag 17. August 2020, 14:47
von DeaD_EyE
Das coole ist, dass das datetime Objekt auch die Format-Methode unterstützt, wie sie bereits von Sirius3 gezeigt worden ist.
Die Abkürzungen sind hier zu finden:
https://docs.python.org/3/library/datet ... e-behavior
Ich finde den Methodenaufruf DateTime.now() besser.
Erklärung: Im Hintergrund wird ein Syscall ausgelöst und die Ausgabe ändert sich jedes Mal. Das erwartet man eher von Funktionen und Methoden mit Seiteneffekt.