তালিকার মধ্যে সবচেয়ে বয়স্ক / কনিষ্ঠতম ডেটটাইম অবজেক্টটি সন্ধান করুন


93

আমি ডেটটাইম অবজেক্টের একটি তালিকা পেয়েছি এবং আমি সবচেয়ে পুরানো বা কনিষ্ঠতমকে খুঁজে পেতে চাই। এই তারিখগুলির কিছু ভবিষ্যতে হতে পারে।

from datetime import datetime

datetime_list = [
    datetime(2009, 10, 12, 10, 10),
    datetime(2010, 10, 12, 10, 10),
    datetime(2010, 10, 12, 10, 10),
    datetime(2011, 10, 12, 10, 10), #future
    datetime(2012, 10, 12, 10, 10), #future
]

এটি করার সর্বাধিক অনুকূল উপায় কী? আমি তাদের প্রত্যেকের সাথে ডেটটাইম.উনউ () তুলনা করার কথা ভাবছিলাম।


6
কীভাবে maxএবং min?
জোশডি

9
স্ট্যাকওভারফ্লোতে কোনও অনুরূপ প্রশ্নই ওঠে নি, আমি উত্তরের জন্য অনুসন্ধান করেছি, সুতরাং আমি নিশ্চিত যে এটি অন্যের পক্ষে কার্যকর হবে।
Panosl

উত্তর:


129

প্রবীণতম:

oldest = min(datetimes)

এখনকার চেয়ে কম বয়সী:

now = datetime.datetime.now(pytz.utc)
youngest = max(dt for dt in datetimes if dt < now)

তুমি বলতে চাও? ( Oldest before now)
বুলগানটামির

পাইথন 3-তে, আমি মনে করি এটি ত্রুটিযুক্ত। আমি যদি এই অ্যারে ["April2020", "March2020"] দিই, মিনিট আমাকে "এপ্রিল2020" দেবে যেন মিনিটই সাম্প্রতিক দিন। যাইহোক, আমি যদি এটি ["April2020", "জানুয়ারী2021", "মার্চ2020"] দিই, মিনিট আমাকে "এপ্রিল2020" দেবে। আমি নিশ্চিত যে মিনিট বর্ণমালার সর্বনিম্নটি ​​দেবে যা খুব সাম্প্রতিক তারিখের নয়।
স্কটিব্ল্যাডেস

4
@ স্কটিব্ল্যাডস কারণ এটি আপনার উদাহরণে আপনার মানগুলি স্ট্রিং হয় (যা কোনও তারিখের প্রতিনিধিত্ব করে তবে বাস্তবে এটি dateমান হয় না ), সুতরাং তাদের কেবল বর্ণমালার সাথে তুলনা করা যেতে পারে। পরিবর্তে আপনার যদি মান dateবা datetimeমানগুলির একটি অ্যারে থাকে তবে সেগুলি সঠিকভাবে তুলনা করা হবে।
জর্ডান

30

তারিখগুলির একটি তালিকা দেওয়া হয়েছে dates:

সর্বোচ্চ তারিখ হয় max(dates)

ন্যূনতম তারিখটি min(dates)


15

তারিখের সময়গুলি তুলনীয়; যাতে আপনি ব্যবহার করতে পারেন max(datetimes_list)এবংmin(datetimes_list)


6

আপনি কি এই চেষ্টা করেছেন:

>>> from datetime import datetime as DT
>>> l =[]
>>> l.append(DT(1988,12,12))
>>> l.append(DT(1979,12,12))
>>> l.append(DT(1979,12,11))
>>> l.append(DT(2011,12,11))
>>> l.append(DT(2022,12,11))
>>> min(l)
datetime.datetime(1979, 12, 11, 0, 0)
>>> max(l)
datetime.datetime(2022, 12, 11, 0, 0)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.