ਪਾਇਥਨ ਵਿੱਚ ਇੱਕ ਮਿਤੀ ਤੋਂ ਹਫ਼ਤੇ ਜਾਂ ਮਹੀਨੇ ਦਾ ਦਿਨ ਇੱਕ ਸਤਰ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕਰੋ (ਜਿਵੇਂ ਕਿ ਜਰਮਨ ਜਾਂ ਅੰਗਰੇਜ਼ੀ)

ਕਾਰੋਬਾਰ

ਪਾਈਥਨ ਦੀ ਸਟੈਂਡਰਡ ਲਾਇਬ੍ਰੇਰੀ ਡੇਟਟਾਈਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਤੁਸੀਂ ਇੱਕ ਮਿਤੀ ਸਤਰ ਤੋਂ ਇੱਕ ਡੇਟਟਾਈਮ ਆਬਜੈਕਟ ਬਣਾ ਸਕਦੇ ਹੋ ਅਤੇ ਇੱਕ ਸਤਰ ਦੇ ਰੂਪ ਵਿੱਚ ਇਸ ਤੋਂ ਹਫ਼ਤੇ ਜਾਂ ਮਹੀਨੇ ਦੇ ਦਿਨ ਦਾ ਨਾਮ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ। ਹਾਲਾਂਕਿ, ਉਹਨਾਂ ਸਤਰਾਂ ਦੀ ਭਾਸ਼ਾ ਵਾਤਾਵਰਣ ਦੇ ਲੋਕੇਲ (ਦੇਸ਼ ਜਾਂ ਖੇਤਰ ਸੈਟਿੰਗ) ‘ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ।

ਕਿਸੇ ਵੀ ਭਾਸ਼ਾ ਵਿੱਚ ਇੱਕ ਸਤਰ ਦੇ ਰੂਪ ਵਿੱਚ ਇੱਕ ਮਿਤੀ ਤੋਂ ਹਫ਼ਤੇ ਦੇ ਦਿਨ ਜਾਂ ਮਹੀਨੇ ਦੇ ਨਾਮ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਇੱਥੇ ਦੋ ਤਰੀਕੇ ਹਨ।

  • ਲੋਕੇਲ ਮੋਡੀਊਲ ਨਾਲ ਲੋਕੇਲ ਬਦਲੋ
  • ਇੱਕ ਨਵਾਂ ਫੰਕਸ਼ਨ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ

ਮਿਤੀ ਅਤੇ ਸਮਾਂ (ਤਾਰੀਖ, ਸਮਾਂ) ਅਤੇ ਸਤਰ ਦੇ ਵਿਚਕਾਰ ਬਦਲਣ ਲਈ ਡੇਟਟਾਈਮ ਮੋਡੀਊਲ ਦੀ ਮੂਲ ਵਰਤੋਂ ਅਤੇ ਵਿਧੀਆਂ strptime() ਅਤੇ strftime() ਬਾਰੇ ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਹੇਠਾਂ ਦਿੱਤੇ ਲੇਖਾਂ ਨੂੰ ਵੇਖੋ।

ਲੋਕੇਲ ਮੋਡੀਊਲ ਨਾਲ ਲੋਕੇਲ ਬਦਲੋ

ਪਾਈਥਨ ਸਟੈਂਡਰਡ ਲਾਇਬ੍ਰੇਰੀ ਲੋਕੇਲ ਸੈਟਿੰਗਾਂ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਇੱਕ ਲੋਕੇਲ ਮੋਡੀਊਲ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ।

ਇਹ ਵਾਤਾਵਰਣ ‘ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਪਰ ਉਦਾਹਰਨ ਵਾਤਾਵਰਣ ਵਿੱਚ, 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

ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਭਾਸ਼ਾ ਵਿੱਚ ਮਿਤੀ ਦੀ ਸਤਰ ਤੋਂ ਦਿੱਤੀ ਗਈ ਮਿਤੀ ਲਈ ਹਫ਼ਤੇ ਦਾ ਦਿਨ ਪ੍ਰਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਕੇ ਅਜਿਹਾ ਕਰ ਸਕਦੇ ਹੋ।

  • locale.setlocale() ਵਿੱਚ ਲੋੜੀਂਦੀ ਭਾਸ਼ਾ ਸੈਟਿੰਗ (ਉਦਾਹਰਨ ਲਈ ja_JP.UTF-8) ਦੇ ਮੁੱਲ ਤੱਕ LC_TIME
  • 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)
# 月曜日

ਇੱਕ ਨਵਾਂ ਫੰਕਸ਼ਨ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ

ਇਹ ਇੱਕ ਨਵੇਂ ਫੰਕਸ਼ਨ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਕੇ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਡੇਟਟਾਈਮ ਆਬਜੈਕਟ ਦੀ ਵੀਕਡੇਅ() ਵਿਧੀ ਸੋਮਵਾਰ ਲਈ 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'>

ਜੇਕਰ ਅਸੀਂ ਹਰੇਕ ਭਾਸ਼ਾ ਦੀ ਸਤਰ ਲਈ ਹਫ਼ਤੇ ਦੇ ਦਿਨਾਂ ਦੇ ਨਾਵਾਂ ਦੀ ਸੂਚੀ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹਾਂ ਅਤੇ ਹਫ਼ਤੇ ਦੇ ਦਿਨ() ਵਿਧੀ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਪੂਰਨ ਅੰਕ ਮੁੱਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਹਨਾਂ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਆਪਣਾ ਟੀਚਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ।