Ondersteuning > Programmeren

Datum en tijd in het Nederlands (of andere taal dan Engels) in Python

(1/2) > >>

erik1984:
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:

--- Code: ---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=

--- Einde van code ---

Het volgende stukje Python blijft echter stug de Engelse dag gebruiken.

--- Code: ---python3 -c "import locale;import datetime;print(locale.getlocale());print(datetime.date.today().strftime('%a %A'))"

--- Einde van code ---
Geeft:

--- Code: ---('nl_NL', 'UTF-8')
Fri Friday

--- Einde van code ---

Vergelijking met het commando date:

--- Code: ---erik@erik-desktop:~$ date
vr 16 sep 2022 14:09:47 CEST

--- Einde van code ---

Wat zie ik over het hoofd in het Pythonscript?

MKe:
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.


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

--- Einde van code ---

edit:
blijkbaar kan ik toch locale zetten, ik vermoed dat je python eerst moet vertellen welke locale je wilt gebruiken.

--- Code: --->> import locale
>> locale.setlocale(locale.LC_TIME, "nl_NL")
>> datetime.now().strftime("%a")
'vr'

--- Einde van code ---

bart85:
https://docs.python.org/3/library/locale.html
Het volgende gevonden op bovenstaande link. Het geeft de locale van het systeem aan.

--- Code: --->>> import locale
>>> locale.getdefaultlocale()
--- Einde van code ---

erik1984:
Bedankt voor het meedenken! c% geeft bij mij ook de Engels  weekdag aan.

In de interactieve shell krijg ik een error met setlocale:

--- Code: --->>> 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

--- Einde van code ---

Misschien heeft het met de versie te maken? Ga nog even verder zoeken

erik1984:

--- Citaat van: bart85 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.

--- Code: --->>> import locale
>>> locale.getdefaultlocale()
--- Einde van code ---

--- Einde van citaat ---

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


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

--- Einde van code ---

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie