অন্যান্য উত্তরে হাইলাইট না করা একটি প্রধান পার্থক্য হ'ল প্রতিটি সময়ের পার্থক্যের আদিম জন্য একক এবং বহুবচন বিশেষ্যগুলির উপস্থিতি। যদিও আপেক্ষিক সময়ের পার্থক্য বোঝাতে timedelta
কেবল বহুবচন বিশেষ্য (যেমন hours
, days
) সরবরাহ করে, relativedelta
একক বিশেষ্য (যেমন hour
, day
) যথার্থ সময়ের তথ্য বোঝাতেও অফার করে।
এটি 2 শ্রেণির সংজ্ঞা থেকে স্পষ্ট:
Definition: datetime.timedelta([days[, seconds[, microseconds[,
milliseconds[, minutes[, hours[, weeks]]]]]]])
Definition: relativedelta.relativedelta(self, dt1=None, dt2=None,
years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0,
seconds=0, microseconds=0, year=None, month=None, day=None,
weekday=None, yearday=None, nlyearday=None, hour=None, minute=None,
second=None, microsecond=None)
এখন, একক রূপটি ঠিক কী করে? সিঙ্গুলার ফর্ম একটি ব-দ্বীপ যা একটি যোগ করা সৃষ্টি datetime
বস্তু, সেট নির্দিষ্ট তারিখ / সময় আদিম যে datetime
যে বস্তুর উল্লেখ relativedelta
। এখানে একটি ছোট উদাহরণ:
>>> import datetime as dt; from dateutil.relativedelta import *
>>> NOW = dt.datetime(2018, 11, 17, 9, 6, 31)
>>> NOW
datetime.datetime(2018, 11, 17, 9, 6, 31)
>>> NOW + relativedelta(hours=1)
datetime.datetime(2018, 11, 17, 10, 6, 31)
>>> NOW + relativedelta(hour=1)
datetime.datetime(2018, 11, 17, 1, 6, 31)
এটি relativedelta
কিছু আকর্ষণীয় অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হতে পারে, যা ব্যবহার করে প্রয়োগ করা জটিল হতে পারে timedelta
। যেটি দ্রুত মাথায় আসে তা হ'ল গোল-বন্ধ।
একটি আকর্ষণীয় অ্যাপ্লিকেশন: দ্রুত রাউন্ডিং বন্ধ
আমি এখন আপনাকে দেখাব যে relativedelta
কোনও datetime
বস্তুর নিকটতম মিনিট, ঘন্টা, দিন ইত্যাদির জন্য গোল করার সময় আরও কীভাবে ভাব প্রকাশ করা যায় how
নিকটতম ঘন্টা পর্যন্ত গোলাকার:
রাউন্ড অফ ব্যবহার করে এটি কতটা সহজ তা লক্ষ্য করুন relativedelta
:
NOW + relativedelta(hours=1, minute=0, second=0, microsecond=0)
dt.combine(NOW.date(),dt.time(NOW.hour,0,0)) + dt.timedelta(0,60*60,0)
অন্যান্য আরও জটিল রাউন্ডিং অফগুলি ব্যবহার করে সহজেই অর্জনযোগ্য relativedelta
। তবে খেয়াল করুন যে যে সমস্ত রাউন্ড-অফগুলি করা যেতে পারে relativedelta
সেগুলি datetime
ফাংশন ব্যবহার করে এবং timedelta
কেবল কিছুটা আরও বিভ্রান্তিকর উপায়ে করা যেতে পারে।
dateime.timedelta
যা আপনি যা চান তা অর্জন করবে এবং বাহ্যিকdateutil
প্যাকেজের উপর নির্ভরতা এড়াবে ।