Entuk dina minggu utawa sasi saka tanggal ing Python minangka string (contone Jerman utawa Inggris)

Bisnis

Nggunakake datetime perpustakaan standar Python, sampeyan bisa nggawe obyek datetime saka senar tanggal lan njaluk jeneng dina minggu utawa sasi saka iku minangka senar. Nanging, basa senar kasebut gumantung saka lokal (negara utawa wilayah) lingkungan.

Ing ngisor iki ana rong cara kanggo njupuk jeneng dina minggu utawa sasi saka tanggal minangka string ing basa apa wae.

  • Ngganti lokal karo modul lokal
  • Netepake fungsi anyar

Kanggo informasi luwih lengkap babagan panggunaan dhasar modul datetime lan cara strptime () lan strftime () kanggo ngowahi antarane tanggal lan wektu (tanggal, wektu) lan strings, waca artikel ing ngisor iki.

Ngganti lokal karo modul lokal

Pustaka standar Python nyedhiyakake modul lokal kanggo ngontrol setelan lokal.

Iku gumantung ing lingkungan, nanging ing lingkungan conto, nggunakake kode format ing ngisor iki ing strftime () cara, jeneng dina minggu lan sasi bisa dipikolehi ing notasi Inggris.
%A,%a,%B,%b

Conto ing ngisor iki nggunakake obyek datetime kanggo makili tanggal lan wektu (tanggal lan wektu), nanging padha bener kanggo obyek tanggal sing mung duwe informasi tanggal.

import datetime
import locale

dt = datetime.datetime(2018, 1, 1)
print(dt)
# 2018-01-01 00:00:00

print(dt.strftime('%A, %a, %B, %b'))
# Monday, Mon, January, Jan

LC_TIME, setelan kategori lokal kanggo format wektu, dicenthang karo locale.getlocale (), lan disetel kanggo Ora ana. Asil iki gumantung ing lingkungan.

print(locale.getlocale(locale.LC_TIME))
# (None, None)

LC_TIME kanggo Japanese (UTF-8) ja_JP.UTF-8 ing locale.setlocale () kanggo njaluk jeneng dina lan sasi ing Japanese. locale.LC_ALL bisa digunakake kanggo nyetel kabeh kategori lokal, nanging Wigati sing iki bakal mengaruhi, contone, LC_MONETARY, contone,.

Elinga yen owah-owahan iki mung efektif ing kode iki. Ora ateges variabel lingkungan sistem bakal ditulis maneh.

locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
print(locale.getlocale(locale.LC_TIME))
# ('ja_JP', 'UTF-8')

print(dt.strftime('%A, %a, %B, %b'))
# 月曜日, 月, 1月,  1

Sampeyan uga bisa ngganti setelan lokal kanggo nggunakake notasi basa liyane, kayata Inggris utawa Jerman.

locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# Monday, Mon, January, Jan

locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# Montag, Mo, Januar, Jan

Yen sampeyan pengin entuk dina minggu kanggo tanggal tartamtu saka string tanggal ing basa apa wae, sampeyan bisa nindakake kanthi tindakake langkah ing ngisor iki.

  • LC_TIME menyang Nilai saka setelan basa sing dikarepake (contone ja_JP.UTF-8) ing locale.setlocale ()
  • Ngonversi string menyang obyek datetime nganggo strptime()
  • Telpon strftime () ing obyek datetime karo kode format ing ngisor iki:%A,%a,%B,%b
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')

s = '2018-01-01'
s_dow = datetime.datetime.strptime(s, '%Y-%m-%d').strftime('%A')

print(s_dow)
# 月曜日

Netepake fungsi anyar

Iki bisa ditindakake kanthi nemtokake fungsi anyar.

Ing dina minggu () cara obyek datetime menehi nilai integer 0 kanggo Senin lan 6 kanggo Minggu.

import datetime

dt = datetime.datetime(2018, 1, 1)
print(dt)
# 2018-01-01 00:00:00

print(dt.weekday())
# 0

print(type(dt.weekday()))
# <class 'int'>

Ana cara sing padha, isoweekday (), sing ngasilake nilai integer 1 kanggo Senin lan 7 kanggo Minggu. Elinga yen ana prabédan subtle.

print(dt.isoweekday())
# 1

print(type(dt.isoweekday()))
# <class 'int'>

Yen kita nemtokake dhaptar jeneng dina minggu kanggo saben senar basa lan njupuk wong-wong mau nggunakake nilai integer dijupuk dening cara weekday (), kita bisa entuk goal kita.