از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه اشیاء تاریخ دلورین را انسانی کنیم
سرفصلهای مطلب
معرفی
کار با زمان قرار می تواند کمی دلهره آور و چالش برانگیز باشد و مدیریت تاریخ در پایتون نیز از این قاعده مستثنی نیست. پایتون داخلی datetime
ماژول ما را با چندین کلاس آشنا کرد – date
، datetime
، time
، timezone
و timedelta
و چندین کتابخانه خارجی برای رسیدگی به مسائل موجود در ماژول رسمی مانند Arrow ایجاد شده اند.
در این راهنما، ما نگاهی به روش انسانی کردن اشیاء تاریخ در آن خواهیم داشت دلورین – یک کتابخانه ساخته شده بر روی پیتز که کتابخانه استاندارد برای حل مسائل مربوط به مناطق زمانی است و dateutil که برای محاسبه دلتاها بین هر 2 شی تاریخ داده شده استفاده می شود.
نصب Delorean راه اندازی یک محیط مجازی
Delorean برای نصب از طریق در دسترس است pip
. به طور کلی توصیه می شود که در یک محیط مجازی کار کنید زیرا به شما امکان می دهد وابستگی های مورد نیاز پروژه های مختلف را جدا شده سازماندهی کنید.
در لینوکس یا MacOS برای ایجاد یک محیط مجازی، ما اجرا می کنیم:
$ python3 -m venv env
$ source env/bin/activate
$ python3 -m pip install delorean
متناوبا، از سوی دیگر، روی ویندوزی که می توانیم اجرا کنیم:
$ virtualenv env
$ .\env\Scripts\activate
$ python3 -m pip install delorean
انسانی کردن اشیاء تاریخ دلورین با انسان سازی ()
در حالی که مُهرهای زمان برای دستگاه های دیجیتال بسیار دقیق و عالی هستند – برای انسان چندان قابل درک نیستند. ما آگاهی شناختی از چنین مقیاس هایی نداریم. بهعلاوه، ما بهطور طبیعی تاریخها را مانند رایانهها درک نمیکنیم، مگر در موارد نادرتر. اگر ساعت و تقویم ثابت در اکثر دستگاههای دیجیتال – از ثابت گرفته تا تلفن همراه – تعبیه شده بود، شاید بیشتر مردم نمیدانستند چه تاریخی است.
در بیشتر مواقع، با اشاره به زمان با زمان سروکار داشتیم جایی که ما الان هستیم. کی دوستت رو دیدی؟ در 12 ژوئیه 2021، یا دیروز? را humanize()
تابع یک تاریخ واقعی می گیرد و آن را به آنچه مردم هنگام انتقال زمان یک رویداد استفاده می کنند تبدیل می کند:
import delorean
datetime_strings = ("Thu July 12 2021", "June 5th, 2021", "April 28th, 2052")
for date in datetime_strings:
delorean_object = delorean.parse(date)
human_date = delorean_object.humanize()
print(human_date)
این رشته های تاریخ به اشیاء دلور تجزیه می شوند و سپس انسانی شده:
4 hours from now
a month ago
30 years from now
این یک ویژگی عالی برای حاشیه نویسی زمان قبل یا قبل از رویدادها است روی برنامه های کاربردی. به عنوان مثال، ممکن است به یک کاربر بگویید که یک روز پیش اعلان دریافت کرده است یا یک ماه دیگر کنسرتی در راه است. اگر رویداد، مثلاً، قدیمیتر از آن باشد، میتوان آن را بین این دو تغییر داد ن روزها.
برای انجام این کار، اندازه گیری می کنیم که آیا تاریخ بیش از این اتفاق افتاده است ن روز قبل از جاری تاریخ، با استفاده از timedelta
و پیام را به درستی تنظیم کنید:
import delorean
datetime_strings = ("Thu July 12 2021", "June 5th, 2021")
for index, date in enumerate(datetime_strings):
delorean_object = delorean.parse(date)
current_time = delorean.Delorean()
if (current_time-delorean_object) < datetime.timedelta(5):
human_date = delorean_object.humanize()
print(f'Event {index} happened', human_date)
else:
print(f'Event {index} happened روی', delorean_object.date)
این نتیجه در:
Event 0 happened 14 hours ago
Event 1 happened روی 2021-06-05
این بسیار منطقی است، زیرا اگر به کسی بگویید که دیروز اتفاقی افتاده است، برای تشخیص آن نیازی به فکر کردن نیست. اما اگر بگویید که یک ماه پیش اتفاقی افتاده است، احتمالاً به تقویم نگاه میکنند تا بفهمند که چه زمانی بوده است.
تاریخ های نسبی را با دلورین انسانی کنید
Delorean همچنین ارجاع تاریخ ها را آسان می کند در رابطه با تاریخ دیگری به روشی بسیار شهودی و شبیه انسان.
این بار جمعه آینده می بینمت.
این را مردم به خوبی درک می کنند، اما کدنویسی با استفاده از دست خسته کننده است timedelta
. با استفاده از ترکیبی از next_
و last_
با روزهای هفته، ماه ها یا حتی سال ها، می توانیم اشیاء دلور را محاسبه و ایجاد کنیم روی تاریخ های موجود از قبل:
from delorean import Delorean
dt_tm = Delorean()
nxt_fri = dt_tm.next_friday()
print("Friday next week: ", nxt_fri)
two_fridays_ago = dt_tm.last_friday(2)
print("Friday two weeks ago: ", two_fridays_ago)
two_fridays_from_now_at_midnight = dt_tm.next_friday(2).midnight
print("Two Fridays from now at midnight: ", two_fridays_from_now_at_midnight)
next_month = dt_tm.next_month()
print("This time next month: ", next_month)
next_month = dt_tm.next_year().midnight
print("This time next month: ", next_month)
برای دریافت تاریخ یک روز از هفته بیش از فقط آخر یا بعد هفته – عددی را می گذرانیم که نشان دهنده تعداد هفته هایی است که طی می کنیم. همین امر برای روزها، ماه ها یا سال ها صدق می کند:
Friday next week: Delorean(datetime=datetime.datetime(2021, 7, 16, 19, 25, 34, 427028), timezone='UTC')
Friday two weeks ago: Delorean(datetime=datetime.datetime(2021, 7, 2, 19, 25, 34, 427028), timezone='UTC')
Two Fridays from now at midnight: 2021-07-23 00:00:00+00:00
This time next month: Delorean(datetime=datetime.datetime(2021, 8, 11, 19, 25, 34, 427028), timezone='UTC')
This time next month: 2022-07-11 00:00:00+00:00
نتیجه
در این راهنما، نگاهی به روش انسانی کردن اشیاء تاریخ دلور در پایتون انداختهایم. انسان سازی است process تبدیل نمونه های تاریخ به یک قالب انسانی تر – با استفاده از کلمات و فریم های زمانی نسبی. با توجه به نسبی بودن این بازه های زمانی، منطقی است که تاریخ ها را در برخی موارد انسانی کنیم، در حالی که در موارد دیگر نه.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-09 18:04:04