Datum umschreiben, strings vs. bytearrays
Verfasst: Sonntag 27. September 2020, 15:34
Eigentlich auch wieder ein locale-Problem, aber ich gab da erst mal auf. Eine Funktion schreibt einen String, der aus einem Dictionary kommt in eine csv-Datei, aber das Datumsformat soll nach de_DE-Locale lauten, also aus
soll
werden.
Beiliegendes Testsnippet - mehr dirty als quick - tut das Gewünschte, aber mir ist klar, daß das fern jeglicher Eleganz oder Idiomatik ist.
Wahrscheinlich ist die 0-Terminierung zudem noch unnötig, aber alte C-Gewohnheit.. Des weiteren läuft das Beispiel anders unter python3.
Merke gerade, daß der Testcode, in mein Programm eingebaut, nicht läuft, sondern der String aus dem Dictionary ein datetime.datetime Objekt ist. Muß ich dann noch konvertieren in str. Oder vielleicht doch gleich ausnutzen, daß es ein datetim-Objekt ist und strftime() benutzen.
Code: Alles auswählen
2020-09-26 15:13:00
Code: Alles auswählen
26.09.2020 15:13
Beiliegendes Testsnippet - mehr dirty als quick - tut das Gewünschte, aber mir ist klar, daß das fern jeglicher Eleganz oder Idiomatik ist.
Code: Alles auswählen
#!/usr/bin/python
day=26
month=9
year=2020
hour=15
minute=13
s="%d.%02d.%d %02d:%02d" % (day,month,year,hour,minute)
print(s)
b="2020-09-26 15:13"
print(b)
#
def nd(bstr):
s=bytearray(17)
b=bytearray()
b.extend(map(ord,bstr))
s[0]=b[8]
s[1]=b[9]
s[2]='.'
s[3]=b[5]
s[4]=b[6]
s[5]='.'
s[6]=b[0]
s[7]=b[1]
s[8]=b[2]
s[9]=b[3]
s[10]=' '
s[11]=b[11]
s[12]=b[12]
s[13]=':'
s[14]=b[14]
s[15]=b[15]
s[16]=0
for i in range(16):
b[i]=s[i]
return str(b)
s=nd(b)
print(s)
Code: Alles auswählen
$ python3 s.py
26.09.2020 15:13
2020-09-26 15:13
bytearray(b'26.09.2020 15:13')
$ ./s.py
26.09.2020 15:13
2020-09-26 15:13
26.09.2020 15:13
Merke gerade, daß der Testcode, in mein Programm eingebaut, nicht läuft, sondern der String aus dem Dictionary ein datetime.datetime Objekt ist. Muß ich dann noch konvertieren in str. Oder vielleicht doch gleich ausnutzen, daß es ein datetim-Objekt ist und strftime() benutzen.