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

۳۲۷ بازدید
آخرین به‌روزرسانی: ۱۹ تیر ۱۴۰۲
زمان مطالعه: ۳ دقیقه
متد ()strptime در پایتون — به زبان ساده

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

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

1from datetime import datetime
2
3date_string = "21 June, 2018"
4
5print("date_string =", date_string)
6print("type of date_string =", type(date_string))
7
8date_object = datetime.strptime(date_string, "%d %B, %Y")
9
10print("date_object =", date_object)
11print("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

1from datetime import datetime
2
3dt_string = "12/11/2018 09:15:32"
4
5# Considering date is in dd/mm/yyyy format
6dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
7print("dt_object1 =", dt_object1)
8
9# Considering date is in mm/dd/yyyy format
10dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
11print("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 مواجه می‌شود در ادامه ارائه شده است.

1from datetime import datetime
2
3date_string = "12/11/2018"
4date_object = datetime.strptime(date_string, "%d %m %Y")
5
6print("date_object =", date_object)

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

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

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

^^

بر اساس رای ۵ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Programiz
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *