Python хэл дээрх огнооноос долоо хоног эсвэл сарын өдрийг тэмдэгт мөр болгон авах (жишээ нь Герман эсвэл Англи хэл)

Бизнес эрхэлдэг

Python-ын стандарт номын сангийн datetime-г ашигласнаар та огнооны мөрөөс огнооны объект үүсгэж, түүнээс долоо хоног эсвэл сарын өдрийн нэрийг тэмдэгт мөр болгон авах боломжтой. Гэсэн хэдий ч эдгээр мөрүүдийн хэл нь тухайн орчны нутаг дэвсгэрээс (улс эсвэл бүс нутгийн тохиргоо) хамаарна.

Ямар ч хэл дээр огнооноос долоо хоног эсвэл сарын нэрийг авах хоёр аргыг энд оруулав.

  • Орон нутгийн модулийг ашиглан хэлийг өөрчил
  • Шинэ функцийг тодорхойлох

Datetime модулийн үндсэн хэрэглээ болон огноо, цаг (огноо, цаг) болон мөр хооронд хөрвүүлэх strptime() болон strftime() аргуудын талаар дэлгэрэнгүй мэдээллийг дараах нийтлэлээс авна уу.

Орон нутгийн модулийг ашиглан хэлийг өөрчлөх

Python стандарт номын сан нь хэлний тохиргоог удирдах локал модулийг хангадаг.

Энэ нь орчноос хамаардаг боловч жишээ орчинд strftime() аргаар дараах форматын кодыг ашиглан долоо хоногийн өдрүүд, саруудын нэрийг англи тэмдэглэгээгээр авах боломжтой.
%A,%a,%B,%b

Дараах жишээнд огноо, цагийг (огноо ба цаг) илэрхийлэхийн тулд datetime объектыг ашигладаг боловч зөвхөн огнооны мэдээлэлтэй огнооны объектын хувьд мөн адил байна.

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, цагийг форматлах локал категорийн тохиргоог locale.getlocale()-аар шалгаж, Үгүй гэж тохируулсан. Энэ үр дүн нь хүрээлэн буй орчноос хамаарна.

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

LC_TIME-ыг Япон хэл рүү (UTF-8) ja_JP.UTF-8 руу locale.setlocale()-д шилжүүлж, Япон хэл дээрх өдөр, сарын нэрийг авна уу. locale.LC_ALL-г бүх орон нутгийн категорийг тохируулахад ашиглаж болно, гэхдээ энэ нь жишээ нь LC_MONETARY-д нөлөөлнө гэдгийг анхаарна уу.

Эдгээр өөрчлөлтүүд зөвхөн энэ кодонд хүчинтэй гэдгийг анхаарна уу. Энэ нь системийн орчны хувьсагчдыг дахин бичнэ гэсэн үг биш юм.

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

Та англи эсвэл герман зэрэг бусад хэлний тэмдэглэгээг ашиглахын тулд хэлний тохиргоог өөрчилж болно.

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

Хэрэв та ямар ч хэл дээрх огнооны мөрөөс тухайн огнооны долоо хоногийн өдрийг авахыг хүсвэл доорх алхмуудыг дагана уу.

  • LC_TIME-ыг locale.setlocale() доторх хүссэн хэлний тохиргооны утга хүртэл (жишээ нь: ja_JP.UTF-8)
  • strptime()-р мөрийг datetime объект руу хөрвүүлэх
  • Дараах форматын кодоор тухайн datetime объект дээрх strftime() руу залга:%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)
# 月曜日

Шинэ функцийг тодорхойлох

Үүнийг шинэ функцийг тодорхойлох замаар хийж болно.

Datetime объектын weekday() арга нь Даваа гаригт 0, Ням гарагт 6 гэсэн бүхэл утгыг өгнө.

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'>

Даваа гаригт 1, Ням гарагт 7 гэсэн бүхэл утгыг буцаадаг isoweekday() гэсэн ижил төстэй арга байдаг. Нарийн ялгаа байгааг анхаарна уу.

print(dt.isoweekday())
# 1

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

Хэрэв бид долоо хоногийн өдрүүдийн нэрсийн жагсаалтыг хэлний мөр тус бүрээр тодорхойлж, тэдгээрийг weekday() аргаар олж авсан бүхэл тоон утгуудыг ашиглан олж авбал бид зорилгодоо хүрч чадна.

Copied title and URL