আপনি কীভাবে পাইথন time.struct_timeঅবজেক্টকে কোনও datetime.datetimeঅবজেক্টে রূপান্তর করবেন ?
আমার কাছে একটি লাইব্রেরি রয়েছে যা প্রথমটি এবং দ্বিতীয় লাইব্রেরি সরবরাহ করে যা দ্বিতীয়টি চায়।
আপনি কীভাবে পাইথন time.struct_timeঅবজেক্টকে কোনও datetime.datetimeঅবজেক্টে রূপান্তর করবেন ?
আমার কাছে একটি লাইব্রেরি রয়েছে যা প্রথমটি এবং দ্বিতীয় লাইব্রেরি সরবরাহ করে যা দ্বিতীয়টি চায়।
উত্তর:
ব্যবহারের time.mktime () পর্ব থেকে সেকেন্ড মধ্যে সময় tuple (স্থানীয়সময় মধ্যে) রূপান্তর, তারপর ব্যবহার করতে ) datetime.fromtimestamp ( DATETIME বস্তুর জন্য।
from datetime import datetime
from time import mktime
dt = datetime.fromtimestamp(mktime(struct))
tm_isdstডেটা হারাবে ? আমি তাই মনে করি, DATETIME বস্তুর ফলে ফিরে যাওয়ার পরিমাণে সাদাসিধা অবশেষ Noneউপর .dst()এমনকি যদি struct.tm_isdstহয় 1।
mktime()নেওয়া উচিত tm_isdstএবং পাইথন সিথ ফাংশন time.mktime()কল mktime()করে on mktime()ভুল স্থানীয় সময় চয়ন করতে পারেন যখন এটি দ্ব্যর্থক (যেমন, শেষ অফ ডিএসটি সময় ( "ফিরে পড়া") রূপান্তরটি) যদি struct.tm_isdstহয় -1অথবা যদি mktime()দেওয়া প্ল্যাটফর্মে উপেক্ষা করে ইনপুট tm_isdst । এছাড়াও, যদি স্থানীয় সময় অঞ্চলে অতীতে আলাদা আলাদা ইউএসসি অফসেট থাকে এবং সি mktime()কোনও historicalতিহাসিক tz ডাটাবেস ব্যবহার না করে যা পুরানো ইউটিসি অফসেট মান সরবরাহ mktime()করতে পারে তবে কোনও ভুল (উদাহরণস্বরূপ, এক ঘন্টা দ্বারা) মানও ফিরে আসতে পারে।
mktime()উপেক্ষা না করে tm_isdst(এটি আমার উপর দিয়ে থাকে) তবে fromtimestamp()অবশ্যই তথ্যটি হারিয়ে ফেলবে: স্থানীয় সময় উপস্থাপন করে ফিরে আসা নিষ্পাপ datetime বস্তু দ্ব্যর্থক হতে পারে (টাইমস্ট্যাম্প -> স্থানীয় সময়টি নির্ধারিত (যদি আমরা লিপ সেকেন্ড উপেক্ষা করি) তবে local time -> timestamp may be ambiguous e.g., during end-of-DST transition). Also, থেকে টাইমস্ট্যাম্প () it যদি এটি কোনও historical
এটার মত:
>>> structTime = time.localtime()
>>> datetime.datetime(*structTime[:6])
datetime.datetime(2009, 11, 8, 20, 32, 35)
*এন্ড **সিনট্যাক্স পুনরায় যোগ করা আপনাকে পৃথক যুক্তিগুলিতে একটি তালিকা বা দ্বৈত প্রকারের বস্তুটি প্রসারিত করতে দেয় - এটি পাইথনের প্রেমের আমার প্রিয় অংশগুলির মধ্যে একটি। আরও তথ্যের জন্য ডকস.পিথন.আর. / ২ / টিউটোরিয়াল/… দেখুন
t=time.strptime("30 Jun 1997 22:59:60", "%d %b %Y %H:%M:%S"); datetime.datetime(*t[:6])
datetime: datetime(*t[:5]+(min(t[5], 59),))যেমন, গ্রহণ করা "2015-06-30 16:59:60 PDT"।
এটি আপনার প্রশ্নের সরাসরি উত্তর নয় (যা ইতিমধ্যে বেশ ভাল উত্তর দেওয়া হয়েছিল)। যাইহোক, বার বার আমাকে মৌলিক ভিত্তিতে বেশ কয়েকবার দংশন করার পরেও আমি এতটা চাপ দিতে পারি না যে আপনার সময়. স্ট্রাক্ট_টাইম অবজেক্টটি কী সরবরাহ করছে, বনাম, অন্যান্য সময় ক্ষেত্রগুলির কী থাকতে পারে তা ঘনিষ্ঠভাবে দেখার জন্য আপনাকে মনোনিবেশ করা উচিত।
ধরে নিই যে আপনার সময়, স্ট্রাক্ট_টাইম অবজেক্ট এবং অন্য কোনও তারিখ / সময় স্ট্রিং উভয় রয়েছে, দুটির তুলনা করুন এবং নিশ্চিত হন যে আপনি ডেটা হারাচ্ছেন না এবং অজান্তে একটি নিষ্পাপ ডেটটাইম অবজেক্ট তৈরি করছেন, যখন আপনি অন্যথায় করতে পারেন।
উদাহরণস্বরূপ, দুর্দান্ত ফিডপার্সার মডিউলটি একটি "প্রকাশিত" ক্ষেত্রটি ফিরিয়ে দেবে এবং সময় "স্ট্রাক্ট_টাইম" তার "প্রকাশিত_প্রেসড" ফিল্ডে ফিরে আসতে পারে:
time.struct_time(tm_year=2013, tm_mon=9, tm_mday=9, tm_hour=23, tm_min=57, tm_sec=42, tm_wday=0, tm_yday=252, tm_isdst=0)
এখন আপনি "প্রকাশিত" ক্ষেত্রের সাথে আসলে কী পাবেন তা লক্ষ্য করুন।
Mon, 09 Sep 2013 19:57:42 -0400
দ্বারা স্টলম্যান এর দাড়ি! টাইমজোন তথ্য!
এই ক্ষেত্রে, অলস লোকটি সময় অঞ্চলটির তথ্য রাখার জন্য দুর্দান্ত তারিখের মডিউলটি ব্যবহার করতে চাইতে পারে:
from dateutil import parser
dt = parser.parse(entry["published"])
print "published", entry["published"])
print "dt", dt
print "utcoffset", dt.utcoffset()
print "tzinfo", dt.tzinfo
print "dst", dt.dst()
যা আমাদের দেয়:
published Mon, 09 Sep 2013 19:57:42 -0400
dt 2013-09-09 19:57:42-04:00
utcoffset -1 day, 20:00:00
tzinfo tzoffset(None, -14400)
dst 0:00:00
তারপরে কেউ ইউটিসিতে বা আপনি যা দুর্দান্ত মনে করেন তা সর্বকালের স্বাভাবিক করার জন্য টাইমজোন-সচেতন ডেটটাইম অবজেক্টটি ব্যবহার করতে পারে।
*_parsedফিডপার্সড থেকে সমস্ত ক্ষেত্রগুলি ইতিমধ্যে ইউটিসি-তে স্বাভাবিক করা হয়েছে যেহেতু তারিখ বিশ্লেষণের ডকুমেন্টেশনে যাচাই করা যেতে পারে তাই এটি অনর্থক।
datetimeবস্তুতে টাইমজোন তথ্য রাখার বিষয়ে যা feedparserকাঁচা স্ট্রিংয়ের তারিখগুলি পার্স করার সময় হারিয়ে যায় ।