मेरे पास 02:00:00 के रूप में datetime.time ऑब्जेक्ट है, मैं इसे कुल सेकेंड में बदलना चाहता हूं जो कि 7200 सेकेंड होना चाहिए।

-1
StackUser 13 जुलाई 2021, 11:39

3 जवाब

सबसे बढ़िया उत्तर

डेटाटाइम ऑब्जेक्ट प्राप्त करने के लिए आप समय को संदर्भ दिनांक के साथ जोड़ सकते हैं। यदि आप उस संदर्भ तिथि को घटाते हैं, तो आपको एक टाइमडेल्टा ऑब्जेक्ट मिलता है, जिससे आप total_seconds ले सकते हैं:

from datetime import datetime, time

t = time(2,0,0)

ts = (datetime.combine(datetime.min, t) - datetime.min).total_seconds()

print(ts)
# 7200.0

pandas के साथ, मैं टाइम ऑब्जेक्ट कॉलम (सीरीज़) के स्ट्रिंग प्रस्तुति का उपयोग करता हूं और इसे टाइमडेल्टा डेटाटाइप में परिवर्तित करता हूं - जो आपको कुल सेकंड प्राप्त करने के लिए dt एक्सेसर का उपयोग करने की अनुमति देता है:

import pandas as pd

df = pd.DataFrame({'time': [time(2,0,0)]})

df['totalseconds'] = pd.to_timedelta(df['time'].astype(str)).dt.total_seconds()

# df['totalseconds']
# 0    7200.0
# Name: totalseconds, dtype: float64
3
MrFuppes 13 जुलाई 2021, 09:45

इस विधि का प्रयास करें; पैरामीटर 'समय' प्रारूप hh:mm:ss . के अंतर्गत होना चाहिए

def convert_to_seconds(time):
    # Separate all symbols of 'time'
    separated = list(time)
    
    # Delete all ':' symbols
    for i in separated:
        if i == ':':
            separated.remove(i)
    
    # Join the elements of the list together two by two
    separated[0] = separated[0] + separated[1]
    separated[1] = separated[2] + separated[3]
    separated[2] = separated[4] + separated[5]
    
    # Delete the last 3 elements of the list that are useless now
    for count in range(3):
        del l[3]
    
    # Convert to integers
    for i in separated:
        separated[separated.index(i)] = int(i)

    # Calculate seconds
    seconds = 0
    seconds += separated[0] * 3600
    seconds += separated[1] * 60
    seconds += separated[2]

    return seconds

यह पहले के तरीके की तरह थोड़ा लंबा है, लेकिन समझने में थोड़ा आसान है।

0
Lvn Rtg 13 जुलाई 2021, 09:33

आप डेटाटाइम लाइब्रेरी का उपयोग करके गणना कर सकते हैं

def time_in_ms():
    from datetime import datetime
    now = datetime.now()
    time_arr = now.strftime("%H:%M:%S").split(":")
    total_time = (int(time_arr[0]) * 3600) + (int(time_arr[1]) * 60) +(int(time_arr[2]))
    return total_time
0
yunus 13 जुलाई 2021, 09:05