احصل على يوم الأسبوع أو الشهر من تاريخ في Python كسلسلة (مثل الألمانية أو الإنجليزية)

اعمال

باستخدام مكتبة Python القياسية والتاريخ والوقت ، يمكنك إنشاء كائن تاريخ / وقت من سلسلة تاريخ والحصول على اسم يوم الأسبوع أو الشهر منه كسلسلة. ومع ذلك ، تعتمد لغة هذه السلاسل على الإعدادات المحلية (إعداد الدولة أو المنطقة) للبيئة.

فيما يلي طريقتان للحصول على اسم يوم الأسبوع أو الشهر من تاريخ كسلسلة بأي لغة.

  • قم بتغيير اللغة باستخدام الوحدة النمطية للغة
  • حدد وظيفة جديدة

لمزيد من المعلومات حول الاستخدام الأساسي لوحدة datetime والطرق strptime () و strftime () للتحويل بين التاريخ والوقت (التاريخ والوقت) والسلاسل ، يرجى الرجوع إلى المقالات التالية.

تغيير اللغة مع وحدة اللغة

توفر مكتبة Python القياسية وحدة نمطية محلية للتحكم في إعدادات اللغة.

يعتمد ذلك على البيئة ، ولكن في بيئة المثال ، باستخدام رمز التنسيق التالي في طريقة strftime () ، يمكن الحصول على أسماء أيام الأسبوع والأشهر بالتدوين باللغة الإنجليزية.
%Aو%aو%Bو%b

يستخدم المثال التالي كائن التاريخ والوقت لتمثيل التاريخ والوقت (التاريخ والوقت) ، ولكن الشيء نفسه ينطبق على كائن التاريخ الذي يحتوي على معلومات التاريخ فقط.

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 إلى قيمة إعداد اللغة المطلوب (مثل ja_JP.UTF-8) في locale.setlocale ()
  • تحويل سلسلة إلى كائن تاريخ / وقت باستخدام strptime ()
  • قم باستدعاء 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)
# 月曜日

حدد وظيفة جديدة

يمكن تحقيق ذلك من خلال تحديد وظيفة جديدة.

تعطي طريقة 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'>

هناك طريقة مماثلة ، isoweekday () ، والتي تُرجع قيمة عددية 1 ليوم الاثنين و 7 ليوم الأحد. لاحظ أن هناك اختلاف دقيق.

print(dt.isoweekday())
# 1

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

إذا حددنا قائمة بأسماء أيام الأسبوع لكل سلسلة لغة واسترجعناها باستخدام القيم الصحيحة التي تم الحصول عليها من خلال طريقة weekday () ، فيمكننا تحقيق هدفنا.

Copied title and URL