python tutorial আমি সেকেন্ডে ঘন্টা, মিনিট এবং সেকেন্ডে কিভাবে রূপান্তর করব?




python tutorial pdf (6)

আমার একটি ফাংশন আছে যা সেকেন্ডের মধ্যে তথ্য ফেরত দেয়, তবে আমাকে সেই তথ্যটি ঘন্টাগুলিতে সঞ্চয় করতে হবে: মিনিট: সেকেন্ড।

পাইথন এই সেকেন্ডে সেকেন্ড রূপান্তর করার জন্য একটি সহজ উপায় আছে কি?


আপনি datetime.timedelta ফাংশন ব্যবহার করতে পারেন:

>>> import datetime
>>> str(datetime.timedelta(seconds=666))
'0:11:06'


আপনি যদি datetime.time পেতে চান। সময় মান, আপনি এই কৌশল ব্যবহার করতে পারেন:

my_time = (datetime(1970,1,1) + timedelta(seconds=my_seconds)).time()

আপনি timedelta time যুক্ত করতে পারবেন না, তবে এটি datetime যোগ করতে পারেন।

ইউপিডি : তবুও একই কৌশল আরেকটি পরিবর্তন:

my_time = (datetime.fromordinal(1) + timedelta(seconds=my_seconds)).time()

1 পরিবর্তে আপনি 0 এর চেয়ে বড় কোনও নম্বর ব্যবহার করতে পারেন। এখানে আমরা ব্যবহার করব যে datetime.fromordinal সবসময় time অবজেক্টের সাথে time উপাদানটি শূন্য করে দেবে।


divmod() ফাংশনটি ব্যবহার করে, যা কোয়ান্টেন্ট এবং বাকি উভয়ই তৈরি করতে শুধুমাত্র একটি divmod() করে, আপনি ফলাফলটি খুব দ্রুত দুটি গাণিতিক ক্রিয়াকলাপের সাথে করতে পারেন:

m, s = divmod(seconds, 60)
h, m = divmod(m, 60)

এবং তারপর ফলাফল অনুকূল আউটপুট রূপান্তর করতে স্ট্রিং বিন্যাস ব্যবহার করুন :

print "%d:%02d:%02d" % (h, m, s)
print('{:d}:{:02d}:{:02d}'.format(h, m, s)) # Python 3

>>> import datetime
>>> "{:0>8}".format(datetime.timedelta(seconds=66))
>>> "{:0>8}".format(str(datetime.timedelta(seconds=66)))  # Python3
>>> '00:01:06' # good

এবং:

>>> "{:0>8}".format(datetime.timedelta(seconds=666777))
>>> "{:0>8}".format(str(datetime.timedelta(seconds=666777)))  # Python3
>>> '7 days, 17:12:57' # nice

ছাড়া '0: 8':

>>> "{}".format(datetime.timedelta(seconds=66))
>>> '0:01:06' # not HH:MM:SS

এবং:

>>> import time
>>> time.strftime("%H:%M:%S", time.gmtime(666777))
>>> '17:12:57' # wrong

কিন্তু:

>>> "{:0>8}".format(datetime.timedelta(seconds=620000))
>>> "{:0>8}".format(str(datetime.timedelta(seconds=620000)))  # Python3
>>> '7 days, 4:13:20' # bummer

এই আমি কিভাবে পেয়েছিলাম।

def sec2time(sec, n_msec=3):
    ''' Convert seconds to 'D days, HH:MM:SS.FFF' '''
    if hasattr(sec,'__len__'):
        return [sec2time(s) for s in sec]
    m, s = divmod(sec, 60)
    h, m = divmod(m, 60)
    d, h = divmod(h, 24)
    if n_msec > 0:
        pattern = '%%02d:%%02d:%%0%d.%df' % (n_msec+3, n_msec)
    else:
        pattern = r'%02d:%02d:%02d'
    if d == 0:
        return pattern % (h, m, s)
    return ('%d days, ' + pattern) % (d, h, m, s)

কিছু উদাহরণ:

$ sec2time(10, 3)
Out: '00:00:10.000'

$ sec2time(1234567.8910, 0)
Out: '14 days, 06:56:07'

$ sec2time(1234567.8910, 4)
Out: '14 days, 06:56:07.8910'

$ sec2time([12, 345678.9], 3)
Out: ['00:00:12.000', '4 days, 00:01:18.900']




python