Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Datum en tijd in het Nederlands (of andere taal dan Engels) in Python  (gelezen 4437 keer)

Volgens de documentatie van Python https://docs.python.org/3/library/datetime.html?highlight=strftime#strftime-strptime-behavior zou het formaat "%a" de afgekorte versie van de weekdag terug moeten geven in de taal van je 'locale'.

Als het goed is heb ik die op Nederlands/Nederland staan:
erik@erik-desktop:~$ locale
LANG=nl_NL.UTF-8
LANGUAGE=nl:en_US
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC=nl_NL.UTF-8
LC_TIME=nl_NL.UTF-8
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY=nl_NL.UTF-8
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER=nl_NL.UTF-8
LC_NAME=nl_NL.UTF-8
LC_ADDRESS=nl_NL.UTF-8
LC_TELEPHONE=nl_NL.UTF-8
LC_MEASUREMENT=nl_NL.UTF-8
LC_IDENTIFICATION=nl_NL.UTF-8
LC_ALL=

Het volgende stukje Python blijft echter stug de Engelse dag gebruiken.
python3 -c "import locale;import datetime;print(locale.getlocale());print(datetime.date.today().strftime('%a %A'))"
Geeft:
('nl_NL', 'UTF-8')
Fri Friday

Vergelijking met het commando date:
erik@erik-desktop:~$ date
vr 16 sep 2022 14:09:47 CEST

Wat zie ik over het hoofd in het Pythonscript?
« Laatst bewerkt op: 2022/09/16, 14:19:51 door erik1984 »

Offline MKe

  • Lid
Re: Datum en tijd in het Nederlands (of andere taal dan Engels) in Python
« Reactie #1 Gepost op: 2022/09/16, 15:13:42 »
volgens mij is alleen %c, %x en %X in locale format. Misschien kun je het met regex uit %c halen? Ik heb zelf geen enkele computer die in het Nederlands staat, dus ik kan het niet testen.

re.match(r"^(?P<dag>.+?) .*", datetime.now().strftime("%c")).groupdict()["dag"]

edit:
blijkbaar kan ik toch locale zetten, ik vermoed dat je python eerst moet vertellen welke locale je wilt gebruiken.
>> import locale
>> locale.setlocale(locale.LC_TIME, "nl_NL")
>> datetime.now().strftime("%a")
'vr'

« Laatst bewerkt op: 2022/09/16, 15:19:00 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Offline bart85

  • Lid
Re: Datum en tijd in het Nederlands (of andere taal dan Engels) in Python
« Reactie #2 Gepost op: 2022/09/16, 15:46:59 »
https://docs.python.org/3/library/locale.html
Het volgende gevonden op bovenstaande link. Het geeft de locale van het systeem aan.
>>> import locale
>>> locale.getdefaultlocale()
Je leert maar mooi over weg gaan met de commandline. Geen grafische toepassingen voor systeembeheer.

Re: Datum en tijd in het Nederlands (of andere taal dan Engels) in Python
« Reactie #3 Gepost op: 2022/09/16, 15:49:04 »
Bedankt voor het meedenken! c% geeft bij mij ook de Engels  weekdag aan.

In de interactieve shell krijg ik een error met setlocale:
>>> locale.setlocale(locale.LC_TIME, "nl_NL")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.10/locale.py", line 620, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

Misschien heeft het met de versie te maken? Ga nog even verder zoeken
« Laatst bewerkt op: 2022/09/16, 15:51:49 door erik1984 »

Re: Datum en tijd in het Nederlands (of andere taal dan Engels) in Python
« Reactie #4 Gepost op: 2022/09/16, 15:50:35 »
https://docs.python.org/3/library/locale.html
Het volgende gevonden op bovenstaande link. Het geeft de locale van het systeem aan.
>>> import locale
>>> locale.getdefaultlocale()

Jij ook bedankt! Dat lijkt ook de goede locale aan te geven:

>>> import locale
>>> locale.getdefaultlocale()
('nl_NL', 'UTF-8')

Re: Datum en tijd in het Nederlands (of andere taal dan Engels) in Python
« Reactie #5 Gepost op: 2022/09/16, 15:59:07 »
@MKe

Blijkbaar heb ik locale "nl_NL" niet. Alleen "nl_NL.utf8" volgens
locale -a

Met
locale.setlocale(locale.LC_TIME, "nl_NL.utf8")
Werkt het bij mij ook.

Mogelijk dat Python die van het systeem niet automatisch overneemt voor datum en tijd.

Aanvulling: Het volgende werkt ook (dan hoeft setlocale niet meer). Nu nog uitzoeken waarom het niet automatisch goed gaat. Zie het voorlopig maar als een fout in de configuratie van de locales aan mijn kant.
env -i LC_TIME="nl_NL.utf8" python3

Laatste aanvulling: Oplossing!

https://docs.python.org/3/library/locale.html#locale.setlocale

locale.setlocale(locale.LC_ALL, "")
Aan het begin van mijn programma doet het 'm
« Laatst bewerkt op: 2022/09/16, 16:40:06 door erik1984 »

Offline PJ

  • Lid
Re: Datum en tijd in het Nederlands (of andere taal dan Engels) in Python
« Reactie #6 Gepost op: 2022/11/14, 09:41:42 »
import locale
locale.setlocale(locale.LC_ALL, '')
import datetime

from datetime import date # haal de datum uit datetime en zet die in datum

today = date.today()
Vandaag = today.strftime("%A" + ' ' +  "%d"' ' +  "%B" + ' ' +  "%Y")

print("\nDatum vandaag:", Vandaag)