Variable mit aktueller Tageszeit

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

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
ganja
User
Beiträge: 189
Registriert: Mittwoch 3. Dezember 2014, 07:44

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)
Benutzeravatar
snafu
User
Beiträge: 6867
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Du könntest eine Art Alias erreichen, wenn du einen kurzen Funktionsnamen benutzt:

Code: Alles auswählen

def now():
    return datetime.now().strftime("%H:%M")
Aufgerufen werden muss es aber dennoch, da sich die Zeit sonst nicht aktualisiert.
Benutzeravatar
__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
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

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
In specifications, Murphy's Law supersedes Ohm's.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Benutzeravatar
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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten