در این مطلب، چگونگی ساخت شی datetime از یک رشته در «زبان برنامه‌نویسی پایتون» (Python Programming Language) با بهره‌گیری از مثال‌های گوناگون آموزش داده شده است. متد ()strptime یک شی datetime را از یک رشته داده شده می‌سازد. شایان توجه است که نمی‌توان شی datetime را از هر رشته‌ای ساخت. رشته باید در یک قالب خاص باشد. مثال زیر در این راستا قابل توجه است.

مثال ۱: تبدیل رشته به شی datetime

from datetime import datetime

date_string = "21 June, 2018"

print("date_string =", date_string)
print("type of date_string =", type(date_string))

date_object = datetime.strptime(date_string, "%d %B, %Y")

print("date_object =", date_object)
print("type of date_object =", type(date_object))

خروجی قطعه کد بالا، به صورت زیر است.

date_string = 21 June, 2018
type of date_string = <class 'str'>
date_object = 2018-06-21 00:00:00
type of date_object = <class 'datetime.datetime'>

روش کار متد ()strptime

متد کلاس ()strptime دارای دو آرگومان است.

  • رشته (به datetime تبدیل می‌شود)
  • کد فرمت

بسته به رشته و کد فرمت استفاده شده، متد، شی datetime معادل آن را باز می‌گرداند. توضیحات مربوط به کد مثال ارائه شده در بالا، در ادامه بیان شده است.

متد ()strptime در پایتون -- به زبان ساده

  • d%: نشانگر روز ماه است. مثال: 01, 02, …, 31.
  • B%: نام ماه کامل است. برای مثال: February ،January و دیگر موارد.
  • Y%: سال در چهار رقم. مثال: ۲۰۱۸، ۲۰۱۹ و دیگر موارد.

در ادامه، مثال دیگری از متد ()strptime ارائه شده است.

مثال ۲: تبدیل رشته به شی datetime

from datetime import datetime

dt_string = "12/11/2018 09:15:32"

# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)

# Considering date is in mm/dd/yyyy format
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)

خروجی حاصل از اجرای قطعه کد بالا، به صورت زیر است.

dt_object1 = 2018-11-12 09:15:32
dt_object2 = 2018-12-11 09:15:32

لیست کدهای فرمت

در جدول زیر، همه کدهای فرمت قابل استفاده، ارائه شده است.

کد معنا مثال
a% نام روز هفته به صورت خلاصه Sun, Mon, …
A% نام روز هفته به صورت کامل Sunday, Monday, …
w% روز هفته به صورت یک عدد 0, 1, …, 6
d% روز هفته به صورت عدد اعشاری 01, 02, …, 31
d-% روز ماه به صورت یک عدد اعشاری با پیش‌صفر 1, 2, …, 30
b% نام روز ماه به صورت خلاصه Jan, Feb, …, Dec
B% نام روز ماه به صورت کامل January, February, …
m% ماه به صورت عدد اعشاری با پیش‌صفر 01, 02, …, 12
m-% ماه به صورت عدد اعشاری 1, 2, …, 12
y% سال، بدون قرن (۱۰۰)، به صورت عدد اعشاری با پیش‌صفر 00, 01, …, 99
y-% سال، بدون قرن (۱۰۰)، به صورت عدد اعشاری 0, 1, …, 99
Y% سال با قرن به عنوان عدد اعشاری 2013, 2019 , …
H% ساعت (ساعت ۲۴ ساعتی) با صورت عدد اعشاری با پیش‌صفر 00, 01, …, 23
H-% ساعت (ساعت ۲۴ ساعتی) با صورت عدد اعشاری 0, 1, …, 23
I% ساعت (ساعت 12 ساعتی) با صورت عدد اعشاری با پیش‌صفر 01, 02, …, 12
I-% ساعت (ساعت 12 ساعتی) با صورت عدد اعشاری 1, 2, … 12
p% قبل از ظهر یا بعد از ظهر بودن به وقت محلی (AM یا PM) AM, PM
M% دقیقه به صورت عدد اعشاری با پیش‌صفر 00, 01, …, 59
M-% دقیقه به صورت عدد اعشاری 0, 1, …, 59
S% ثانیه به صورت عدد اعشاری با پیش‌صفر 00, 01, …, 59
S-% ثانیه به صورت عدد اعشاری 0, 1, …, 59
f% میکرو ثانیه به صورت عدد اعشاری با پیش‌صفر در سمت چپ. 000000 – 999999
z% اختلاف ساعت هماهنگ جهانی به شکل HHMM+ یا HHMM-
Z% نام منطقه زمانی
j% روزِ سال به صورت عدد اعشاری با پیش‌صفر 001, 002, …, 366
j-% روز سال به صورت عدد اعشاری 1, 2, …, 366
U% شماره هفته از سال (با احتساب یکشنبه به عنوان اولین روز هفته)؛ همه روزها در سال جدید پیش از اولین یکشنبه، به عنوان هفته صفر در نظر گرفته می‌شوند. 00, 01, …, 53
W% شماره هفته از سال (با احتساب دوشنبه به عنوان اولین روز هفته)؛ همه روزها در سال جدید پیش از اولین دوشنبه، به عنوان هفته صفر در نظر گرفته می‌شوند. 00, 01, …, 53
c% ارائه تاریخ و زمان محلی مناسب. Mon Sep 30 07:06:05 2013
x% ارائه تاریخ محلی مناسب. 09/30/13
X% ارائه زمان محلی مناسب. 07:06:05
%% یک کاراکتر لفظی (لیترال) % %

ValueError در ()strptime

اگر رشته (اولین آرگومان) و کد فرمت (دومین آرگومان) پاس داده شده به ()strptime با یکدیگر تطبیق پیدا نکنند، ValueError نمایش داده می‌شود. نمونه‌ای از کدی که با ValueError مواجه می‌شود در ادامه ارائه شده است.

from datetime import datetime

date_string = "12/11/2018"
date_object = datetime.strptime(date_string, "%d %m %Y")

print("date_object =", date_object)

در صورت اجرای قطعه کد بالا، خطای زیر نمایش داده خواهد شد.

ValueError: time data '12/11/2018' does not match format '%d %m %Y'

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۳ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«الهام حصارکی»، فارغ‌التحصیل مقطع کارشناسی ارشد مهندسی فناوری اطلاعات، گرایش سیستم‌های اطلاعات مدیریت است. او در زمینه هوش مصنوعی و داده‌کاوی، به ویژه تحلیل شبکه‌های اجتماعی، فعالیت می‌کند.