باستخدام مكتبة 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 () ، فيمكننا تحقيق هدفنا.