টাইমডেলটা বোঝা যাচ্ছে


90

নীচে অজগর কোড দেওয়া, দয়া করে আমাকে সেখানে কী ঘটছে তা বুঝতে সহায়তা করুন।

start_time = time.time()
time.sleep(42)
end_time = time.time()

uptime = end_time - start_time

human_uptime = str(datetime.timedelta(seconds=int(uptime)))

তাই আমি এর মধ্যে পার্থক্য পেতে start timeএবং end time, লাইন 5 আমি কাস্ট করে সময়কাল ধরপাকড় এবং কি এখন আরো ব্যাখ্যার কি?

আমি জানি ডেল্টা বলতে কী বোঝায় (গড় বা পার্থক্য) তবে কেন আমাকে পাস seconds = uptimeকরতে হবে timedeltaএবং স্ট্রিং ingালাই কেন এত সুন্দরভাবে কাজ করে যে আমি পেয়েছি HH:MM:SS?

উত্তর:


115

কারণ টাইমডেল্টা যেমন সংজ্ঞায়িত করা হয়:

class datetime.timedelta([days,] [seconds,] [microseconds,] [milliseconds,] [minutes,] [hours,] [weeks])

সমস্ত যুক্তি alচ্ছিক এবং 0 এ ডিফল্ট।

Easilyচ্ছিক আর্গুমেন্টগুলির সাহায্যে আপনি সহজেই "তিন দিন এবং চার মিলিসেকেন্ড" বলতে পারেন।

>>> datetime.timedelta(days=3, milliseconds=4)
datetime.timedelta(3, 0, 4000)
>>> datetime.timedelta(3, 0, 0, 4) #no need for that.
datetime.timedelta(3, 0, 4000)

এবং str কাস্টিংয়ের জন্য, এটি __repr__পঠনযোগ্যতার উন্নতির পরিবর্তে একটি দুর্দান্ত ফর্ম্যাট মান দেয় । ডক্স থেকে:

str (t) [D দিন [গুলি],] [এইচ] এইচ: এমএম: এসএস [.UUUUUU] আকারে একটি স্ট্রিং প্রদান করে, যেখানে ডি নেতিবাচক টির জন্য নেতিবাচক। (5)

>>> datetime.timedelta(seconds = 42).__repr__()
'datetime.timedelta(0, 42)'
>>> datetime.timedelta(seconds = 42).__str__()
'0:00:42'

চেকআউট ডকুমেন্টেশন:

http://docs.python.org/library/datetime.html#timedelta-objects


13

কেন আমাকে সেকেন্ড = টাইমডেল্টায় আপটাইম পাস করতে হবে?

কারণ টাইমডেল্টা অবজেক্টগুলি সেকেন্ড, মিলিসেকেন্ড, দিন, ইত্যাদি পাস হতে পারে ... সুতরাং আপনি কী পাস করছেন তা নির্দিষ্ট করতে হবে (এজন্য আপনি স্পষ্ট কীটি ব্যবহার করেন)। টাইপকাস্টিং এ অতিমাত্রায় কার্যকর intকারণ তারা ভাসাও গ্রহণ করতে পারে।

এবং স্ট্রিং castালাই কেন এত সুন্দরভাবে কাজ করে যে আমি এইচ এইচ: এমএম: এসএস পেয়েছি?

এটি টাইপকাস্টিং নয় যে ফর্ম্যাটগুলি হ'ল __str__বস্তুর অভ্যন্তরীণ পদ্ধতি। আপনি লিখলে বাস্তবে আপনি একই ফলাফল অর্জন করতে পারবেন:

print datetime.timedelta(seconds=int(uptime))

4
আপনি এটিকে ইঙ্গিত করেছেন তবে স্পষ্ট করে লক্ষ করার মতো যে টাইমডেল্টা এইচ এইচ: এমএম: এসএস ফর্ম্যাটে প্রদর্শিত জিনিসগুলির চেয়ে অনেক বেশি কাজ করে। যখনই আপনাকে দুটি ডেটটাইম অবজেক্টের মধ্যে পার্থক্য নেওয়া দরকার তখন একটি টাইমডেল্টা অবজেক্ট ব্যবহৃত হয়।
ওয়াইল্ডক

4
এটি __repr__পদ্ধতি নয়, এটি __str__পদ্ধতি।
utdemir

4
না __repr__()timedelta, কিন্তু তার এর __str__()পদ্ধতি। আপনার জন্য printকল __str()__
বিজিপিটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.