software - python tutorial pdf




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

আপনি যদি 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 উপাদানটি শূন্য করে দেবে।

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

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


আমি সহজেই নাম time.strftime পারি এমন একটি সহজ উপায় (অন্তত আমি সিনট্যাক্সটি মনে রাখতে পারছি না), তবে সময় time.strftime ব্যবহার করা সম্ভব, যা ফর্ম্যাটিংয়ের উপর আরও নিয়ন্ত্রণ দেয়:

>>> import time
>>> time.strftime("%H:%M:%S", time.gmtime(666))
'00:11:06'

gmtime সেকেন্ডে বিশেষ tuple বিন্যাসে strftime() প্রয়োজন যে রূপান্তর করতে ব্যবহৃত হয়।


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

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']

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






python