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
Variable mit aktueller Tageszeit
-
- User
- Beiträge: 89
- Registriert: Mittwoch 15. Januar 2014, 22:30
- Wohnort: Bad Kötzting
- Kontaktdaten:
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.
Code: Alles auswählen
def now():
return datetime.now().strftime("%H:%M")
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
- pillmuncher
- User
- Beiträge: 1530
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Was __blackjack__ gesagt hat.
Bitte nicht nachmachen:Ergebnis:
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()
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
In specifications, Murphy's Law supersedes Ohm's.
@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:
Verhält sich wie ein Objekt, das wenn man es in einen String umwandelt, die aktuelle Uhrzeit ergibt.
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"
- DeaD_EyE
- User
- Beiträge: 1240
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
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.
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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server