تاریخوں اور اوقات کو پائتھون ڈیٹ ٹائم (strftime، strptime) میں تاروں میں تبدیل کرنا

کاروبار

Python کی معیاری لائبریری ڈیٹ ٹائم کو تاریخوں اور اوقات (تاریخوں، اوقات اور اوقات) پر کارروائی کرنے کے لیے استعمال کیا جا سکتا ہے۔ طریقے strftime() اور strptime()، جو تاریخوں اور اوقات کو تاروں میں اور اس سے تبدیل کرتے ہیں، تاریخوں اور اوقات کو مختلف فارمیٹس میں جوڑ کر استعمال کیا جا سکتا ہے۔

یہ گھٹاؤ اور اضافے جیسے کام بھی انجام دے سکتا ہے۔ مثال کے طور پر، آپ آسانی سے حساب لگا سکتے ہیں اور 10 دن پہلے کی تاریخ یا اب سے 3 ہفتے، یا اب سے 50 منٹ بعد کا وقت حاصل کر سکتے ہیں۔

سب سے پہلے، ہم ڈیٹ ٹائم ماڈیول میں دستیاب اشیاء کی درج ذیل کلاسوں کی وضاحت کریں گے۔

  • datetime.datetime:تاریخ اور وقت (تاریخ اور وقت)
  • datetime.date:تاریخ
  • datetime.time:وقت
  • datetime.timedelta:وقت کا فرق اور گزرا ہوا وقت

طریقوں strftime() اور strptime()، جو تاریخ/وقت اور سٹرنگ کو ایک دوسرے میں تبدیل کرتے ہیں، کی بھی وضاحت کی گئی ہے۔

  • datetimeچیز
    • datetime.now():آج کی تاریخ، موجودہ وقت
    • datetimeآبجیکٹ کنسٹرکٹر
    • ڈیٹ ٹائم آبجیکٹ کو ڈیٹ آبجیکٹ میں تبدیل کرنا
  • dateچیز
    • date.today():آج کی تاریخ
    • تاریخ آبجیکٹ کے لیے کنسٹرکٹر
  • timeچیز
    • ٹائم آبجیکٹ کے لیے کنسٹرکٹر
  • timedeltaچیز
    • ٹائم ڈیلٹا آبجیکٹ بنانے کے لیے ڈیٹ ٹائم اور ڈیٹ آبجیکٹ کو گھٹائیں۔
    • ٹائم ڈیلٹا آبجیکٹ کے لیے کنسٹرکٹر
    • ٹائم ڈیلٹا اشیاء کا استعمال کرتے ہوئے گھٹاؤ اور اضافہ
  • strftime():تاریخ اور وقت سے سٹرنگ میں تبدیلی
  • strptime():سٹرنگ سے تاریخ اور وقت میں تبدیلی

معیاری لائبریری میں کیلنڈر ماڈیول بھی شامل ہے، جو سادہ متن یا HTML فارمیٹ میں کیلنڈر تیار کرتا ہے۔

ڈیٹ ٹائم آبجیکٹ

ڈیٹ ٹائم آبجیکٹ ایک ایسی چیز ہے جس میں تاریخ (سال، مہینہ، دن) اور وقت (گھنٹہ، منٹ، سیکنڈ، مائیکرو سیکنڈ) دونوں معلومات ہوتی ہیں۔ آپ درج ذیل صفات کے ساتھ ان معلومات تک رسائی حاصل کر سکتے ہیں۔

  • year
  • month
  • day
  • hour
  • minute
  • second
  • microsecond

datetime.now():آج کی تاریخ، موجودہ وقت

datetime.now() آپ کو آج کی تاریخ (موجودہ تاریخ) اور موجودہ وقت کے ساتھ ڈیٹ ٹائم آبجیکٹ دے گا۔

import datetime

dt_now = datetime.datetime.now()
print(dt_now)
# 2018-02-02 18:31:13.271231

print(type(dt_now))
# <class 'datetime.datetime'>

print(dt_now.year)
# 2018

print(dt_now.hour)
# 18

ڈیٹ ٹائم آبجیکٹ کے لیے کنسٹرکٹر

صوابدیدی تاریخوں اور اوقات کے لیے ڈیٹ ٹائم آبجیکٹ تیار کرنا بھی ممکن ہے۔

ڈیٹ ٹائم آبجیکٹ کا کنسٹرکٹر مندرجہ ذیل ہے۔

datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

درج ذیل اقدار درکار ہیں اور دیگر کو چھوڑا جا سکتا ہے۔ اگر چھوڑ دیا جائے تو ڈیفالٹ ویلیو 0 ہے۔

  • year
  • month
  • day
dt = datetime.datetime(2018, 2, 1, 12, 15, 30, 2000)
print(dt)
# 2018-02-01 12:15:30.002000

print(dt.minute)
# 15

print(dt.microsecond)
# 2000

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

print(dt.minute)
# 0

ڈیٹ ٹائم آبجیکٹ کو ڈیٹ آبجیکٹ میں تبدیل کرنا

ڈیٹ ٹائم آبجیکٹ کو date() طریقہ سے ڈیٹ آبجیکٹ میں تبدیل کیا جا سکتا ہے، جیسا کہ آگے بیان کیا گیا ہے۔

print(dt_now)
print(type(dt_now))
# 2018-02-02 18:31:13.271231
# <class 'datetime.datetime'>

print(dt_now.date())
print(type(dt_now.date()))
# 2018-02-02
# <class 'datetime.date'>

تاریخ اعتراض

ڈیٹ آبجیکٹ ایک ایسی چیز ہوتی ہے جس میں تاریخ (سال، مہینہ، دن) کے بارے میں معلومات ہوتی ہیں۔ سال، مہینہ اور دن کی صفات سے اس تک رسائی حاصل کی جا سکتی ہے۔

date.today():آج کی تاریخ

موجودہ تاریخ (آج کی تاریخ) کا تاریخ اعتراض date.today() کے ساتھ حاصل کیا جا سکتا ہے۔

d_today = datetime.date.today()
print(d_today)
# 2018-02-02

print(type(d_today))
# <class 'datetime.date'>

print(d_today.year)
# 2018

تاریخ آبجیکٹ کے لیے کنسٹرکٹر

تاریخ آبجیکٹ کا کنسٹرکٹر مندرجہ ذیل ہے۔

date(year, month, day)

سب کی ضرورت ہے اور انہیں چھوڑا نہیں جا سکتا۔

d = datetime.date(2018, 2, 1)
print(d)
# 2018-02-01

print(d.month)
# 2

وقت اعتراض

ٹائم آبجیکٹ ایک ایسی چیز ہے جس میں وقت (گھنٹے، منٹ، سیکنڈ اور مائیکرو سیکنڈ) کے بارے میں معلومات ہوتی ہیں۔ گھنٹہ، منٹ، سیکنڈ اور مائیکرو سیکنڈ کے اوصاف کا استعمال کرتے ہوئے اس تک رسائی حاصل کی جا سکتی ہے۔

ٹائم آبجیکٹ کے لیے کنسٹرکٹر

ٹائم آبجیکٹ کا کنسٹرکٹر مندرجہ ذیل ہے۔

time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

یہ سب اختیاری ہیں، اور اگر ان کو چھوڑ دیا جائے، تو وہ 0 پر سیٹ ہیں۔

t = datetime.time(12, 15, 30, 2000)
print(t)
# 12:15:30.002000

print(type(t))
# <class 'datetime.time'>

print(t.hour)
# 12

t = datetime.time()
print(t)
# 00:00:00

ٹائم ڈیلٹا آبجیکٹ

ٹائم ڈیلٹا آبجیکٹ ایک ایسی چیز ہے جو دو تاریخوں اور اوقات، یا گزرے ہوئے وقت کے درمیان وقت کے فرق کی نمائندگی کرتی ہے۔ اس میں دنوں، سیکنڈز، اور مائیکرو سیکنڈز میں معلومات ہوتی ہیں، اور دن، سیکنڈز اور مائیکرو سیکنڈز کے ذریعے اس تک رسائی حاصل کی جاسکتی ہے۔ کل_سیکنڈز() طریقہ استعمال کرکے سیکنڈوں کی کل تعداد حاصل کرنا بھی ممکن ہے۔

ٹائم ڈیلٹا آبجیکٹ بنانے کے لیے ڈیٹ ٹائم اور ڈیٹ آبجیکٹ کو گھٹائیں۔

ڈیٹ ٹائم اشیاء کو ایک دوسرے سے گھٹانے سے ٹائم ڈیلٹا آبجیکٹ حاصل ہوتا ہے۔

td = dt_now - dt
print(td)
# 1 day, 18:31:13.271231

print(type(td))
# <class 'datetime.timedelta'>

print(td.days)
# 1

print(td.seconds)
# 66673

print(td.microseconds)
# 271231

print(td.total_seconds())
# 153073.271231

تاریخ کی اشیاء کو ایک دوسرے سے گھٹانے سے اسی طرح ٹائم ڈیلٹا آبجیکٹ حاصل ہوتا ہے۔

ٹائم ڈیلٹا آبجیکٹ کے لیے کنسٹرکٹر

ٹائم ڈیلٹا آبجیکٹ کا کنسٹرکٹر مندرجہ ذیل ہے۔

timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

یہ سب اختیاری ہیں، اور اگر ان کو چھوڑ دیا جائے، تو وہ 0 پر سیٹ ہیں۔

نوٹ کریں کہ ٹائم ڈیلٹا آبجیکٹ صرف درج ذیل معلومات رکھتا ہے۔

  • دنوں کی ایک بڑی تعداد:days
  • سیکنڈ کی تعداد:seconds
  • مائیکرو سیکنڈ کی گنتی:microseconds

مثال کے طور پر، درج ذیل دو برابر ہیں۔

  • weeks=1
  • days=7
td_1w = datetime.timedelta(weeks=1)
print(td_1w)
# 7 days, 0:00:00

print(td_1w.days)
# 7

ٹائم ڈیلٹا اشیاء کا استعمال کرتے ہوئے گھٹاؤ اور اضافہ

ٹائم ڈیلٹا آبجیکٹ کو ڈیٹ ٹائم اور ڈیٹ آبجیکٹ کے ساتھ استعمال کیا جا سکتا ہے تاکہ گھٹاؤ اور اضافے جیسی کارروائیاں کی جا سکیں۔ مثال کے طور پر، آپ آسانی سے حساب لگا سکتے ہیں اور ایک ہفتہ پہلے کی تاریخ یا اب سے 10 دن پہلے، یا اب سے 50 منٹ بعد کا وقت حاصل کر سکتے ہیں۔

d_1w = d_today - td_1w
print(d_1w)
# 2018-01-26

td_10d = datetime.timedelta(days=10)
print(td_10d)
# 10 days, 0:00:00

dt_10d = dt_now + td_10d
print(dt_10d)
# 2018-02-12 18:31:13.271231

td_50m = datetime.timedelta(minutes=50)
print(td_50m)
# 0:50:00

print(td_50m.seconds)
# 3000

dt_50m = dt_now + td_50m
print(dt_50m)
# 2018-02-02 19:21:13.271231

اسے کسی مخصوص تاریخ تک دنوں کی تعداد کا حساب لگانے کے لیے بھی استعمال کیا جا سکتا ہے۔

d_target = datetime.date(2020, 7, 24)
td = d_target - d_today
print(td)
# 903 days, 0:00:00

print(td.days)
# 903

strftime():تاریخ اور وقت سے سٹرنگ میں تبدیلی

ڈیٹ ٹائم اور ڈیٹ آبجیکٹ کا strftime() طریقہ تاریخ اور وقت (تاریخ اور وقت) کی معلومات کو کسی بھی فارمیٹ فارمیٹ میں سٹرنگ میں تبدیل کرنے کے لیے استعمال کیا جا سکتا ہے۔

فارمیٹنگ کوڈ

دستیاب فارمیٹنگ کوڈز کے لیے نیچے سرکاری دستاویزات دیکھیں۔

بنیادی فارمیٹنگ کوڈز ذیل میں درج ہیں۔

  • %d:صفر بھرے ہوئے اعشاریہ اشارے میں مہینے کا دن۔
  • %m:صفر بھرے ہوئے اعشاریہ اشارے میں مہینہ۔
  • %y:صفر سے بھرے اعشاریہ اشارے میں سال کے آخری دو ہندسے۔
  • %Y:صفر بھرے ہوئے اعشاریہ اشارے میں سال کے چار ہندسے۔
  • %H:جب صفر سے بھرے ہوئے اعشاریہ اشارے میں ظاہر کیا جائے (24 گھنٹے کا اشارہ)
  • %I:جب صفر سے بھرے ہوئے اعشاریہ اشارے میں ظاہر کیا جائے (12 گھنٹے کا اشارہ)
  • %M:صفر بھرے ہوئے اعشاریہ اشارے کے لیے۔
  • %S:صفر کے ساتھ اعشاریہ اشارے میں سیکنڈ۔
  • %f:مائیکرو سیکنڈز (6 ہندسوں) اعشاریہ اشارے میں 0 بھرے ہوئے۔
  • %A:مقامی کے لیے ہفتے کے دن کا نام
  • %a:مقامی کے لیے دن کا نام (مختصرا شکل)
  • %B:مقامی مہینے کا نام
  • %b:مقامی مہینے کا نام (مختصر شکل)
  • %j:صفر بھرنے کے ساتھ اعشاریہ اشارے میں سال کا دن۔
  • %U:صفر کے ساتھ اعشاریہ اشارے میں سال کا ہفتہ نمبر (ہفتہ اتوار کو شروع ہوتا ہے)
  • %W:صفر کے ساتھ اعشاریہ اشارے میں سال کا ہفتہ نمبر (ہفتہ پیر کو شروع ہوتا ہے)

دن اور مہینوں کے ناموں کے لیے درج ذیل فارمیٹنگ کوڈز مقامی کے لحاظ سے مختلف تاروں میں حاصل کیے جا سکتے ہیں۔

  • %A
  • %a
  • %B
  • %b

ISO 8601 فارمیٹ سٹرنگز کے لیے ایک وقف شدہ طریقہ بھی ہے۔

نمونہ کوڈ

print(dt_now.strftime('%Y-%m-%d %H:%M:%S'))
# 2018-02-02 18:31:13

print(d_today.strftime('%y%m%d'))
# 180202

print(d_today.strftime('%A, %B %d, %Y'))
# Friday, February 02, 2018

print('Day number (how many days in a year / January 1 is 001):', d_today.strftime('%j'))
print('Week number (the week starts on Sunday / New Year's Day is 00):', d_today.strftime('%U'))
print('Week number (the week begins on Monday / New Year's Day is 00):', d_today.strftime('%W'))
# Day number (how many days in a year / January 1 is 001): 033
# Week number (the week starts on Sunday / New Year's Day is 00): 04
# Week number (the week begins on Monday / New Year's Day is 00): 05

اگر آپ سٹرنگ کے بجائے نمبر حاصل کرنا چاہتے ہیں تو اسے int() کے ساتھ ایک عدد میں تبدیل کریں۔

week_num_mon = int(d_today.strftime('%W'))
print(week_num_mon)
print(type(week_num_mon))
# 5
# <class 'int'>

ٹائم ڈیلٹا آبجیکٹ کے ساتھ مل کر، بنانا آسان ہے، مثال کے طور پر، کسی بھی فارمیٹ میں دو ہفتہ وار تاریخوں کی فہرست۔

d = datetime.date(2018, 2, 1)
td = datetime.timedelta(weeks=2)
n = 8
f = '%Y-%m-%d'

l = []

for i in range(n):
    l.append((d + i * td).strftime(f))

print(l)
# ['2018-02-01', '2018-02-15', '2018-03-01', '2018-03-15', '2018-03-29', '2018-04-12', '2018-04-26', '2018-05-10']

print('\n'.join(l))
# 2018-02-01
# 2018-02-15
# 2018-03-01
# 2018-03-15
# 2018-03-29
# 2018-04-12
# 2018-04-26
# 2018-05-10

فہرست فہمی اشارے کا استعمال زیادہ ہوشیار ہے۔

l = [(d + i * td).strftime(f) for i in range(n)]
print(l)
# ['2018-02-01', '2018-02-15', '2018-03-01', '2018-03-15', '2018-03-29', '2018-04-12', '2018-04-26', '2018-05-10']

strptime():سٹرنگ سے تاریخ اور وقت میں تبدیلی

datetime strptime() کو تاریخ یا وقت کی تار سے ڈیٹ ٹائم آبجیکٹ بنانے کے لیے استعمال کیا جا سکتا ہے۔ اصل سٹرنگ کے مطابق فارمیٹنگ سٹرنگ کی وضاحت کرنا ضروری ہے۔

ISO 8601 سٹرنگز (Python 3.7 یا بعد کے) کے لیے ایک وقف شدہ طریقہ بھی ہے۔

نمونہ کوڈ

date_str = '2018-2-1 12:30'
date_dt = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M')
print(date_dt)
# 2018-02-01 12:30:00

print(type(date_dt))
# <class 'datetime.datetime'>

بازیافت شدہ ڈیٹ ٹائم آبجیکٹ پر strftime() طریقہ استعمال کرکے، آپ تاریخ اور وقت کو اصل سٹرنگ سے مختلف فارمیٹ میں پیش کر سکتے ہیں۔

print(date_dt.strftime('%Y-%m-%d %H:%M'))
# 2018-02-01 12:30

اگر آپ اسے ڈیٹ ٹائم آبجیکٹ میں تبدیل کرتے ہیں، تو آپ ٹائم ڈیلٹا آبجیکٹ کے ساتھ بھی آپریشن کر سکتے ہیں، لہذا مثال کے طور پر، آپ اسی فارمیٹ میں 10 دن پہلے کی تاریخ کی تار تیار کر سکتے ہیں۔

date_str = '2018-2-1'
date_format = '%Y-%m-%d'
td_10_d = datetime.timedelta(days=10)

date_dt = datetime.datetime.strptime(date_str, date_format)
date_dt_new = date_dt - td_10_d
date_str_new = date_dt_new.strftime(date_format)

print(date_str_new)
# 2018-01-22
Copied title and URL