অন্যান্য উত্তরে হাইলাইট না করা একটি প্রধান পার্থক্য হ'ল প্রতিটি সময়ের পার্থক্যের আদিম জন্য একক এবং বহুবচন বিশেষ্যগুলির উপস্থিতি। যদিও আপেক্ষিক সময়ের পার্থক্য বোঝাতে 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প্যাকেজের উপর নির্ভরতা এড়াবে ।