সময় অঞ্চলগুলির মধ্যে স্যুইচ করতে টাইমডেল্টা ব্যবহার করুন। আপনার যা দরকার তা হ'ল সময় অঞ্চলগুলির মধ্যে কয়েক ঘন্টা মধ্যে অফসেট। একটি ডেটটাইম অবজেক্টের সমস্ত 6 টি উপাদানের জন্য সীমানা দিয়ে বেড়াতে হবে না। টাইমডেল্টা খুব সহজেই লিপ বছর, লিপ সেঞ্চুরি ইত্যাদি পরিচালনা করে। আপনাকে অবশ্যই প্রথমে
from datetime import datetime, timedelta
তারপরে যদি offset
ঘন্টাগুলিতে সময় অঞ্চল ব-দ্বীপ হয়:
timeout = timein + timedelta(hours = offset)
যেখানে টাইমিন এবং সময়সীমা ডেটটাইম অবজেক্ট। যেমন
timein + timedelta(hours = -8)
GMT থেকে পিএসটি রূপান্তর করে।
তাহলে, কীভাবে নির্ধারণ করবেন offset
? এখানে একটি সাধারণ ফাংশন প্রদান করা হয়েছে যা আপনার সাথে ডেটটাইম অবজেক্টগুলি টাইমজোন "সচেতন" না ব্যবহার করে রূপান্তর করার জন্য কেবল কয়েকটি সম্ভাবনা রয়েছে যা অন্য কিছু উত্তর খুব সুন্দরভাবে করে। কিছুটা ম্যানুয়াল, তবে কখনও কখনও পরিষ্কারতা সবচেয়ে ভাল।
def change_timezone(timein, timezone, timezone_out):
'''
changes timezone between predefined timezone offsets to GMT
timein - datetime object
timezone - 'PST', 'PDT', 'GMT' (can add more as needed)
timezone_out - 'PST', 'PDT', 'GMT' (can add more as needed)
'''
# simple table lookup
tz_offset = {'PST': {'GMT': 8, 'PDT': 1, 'PST': 0}, \
'GMT': {'PST': -8, 'PDT': -7, 'GMT': 0}, \
'PDT': {'GMT': 7, 'PST': -1, 'PDT': 0}}
try:
offset = tz_offset[timezone][timezone_out]
except:
msg = 'Input timezone=' + timezone + ' OR output time zone=' + \
timezone_out + ' not recognized'
raise DateTimeError(msg)
return timein + timedelta(hours = offset)
অসংখ্য উত্তরগুলি দেখার পরে এবং আমি যে কড়া কোডের সাথে ভাবতে পারি তার সাথে খেলার পরে (আপাতত) এটি সেরা বলে মনে হয় যে সমস্ত অ্যাপ্লিকেশন, যেখানে সময় গুরুত্বপূর্ণ এবং মিশ্র সময়সীমার জন্য অবশ্যই গণনা করা উচিত, সমস্ত ডেটটাইম অবজেক্ট তৈরি করার জন্য একটি সত্য প্রচেষ্টা করা উচিত "সচেতন"। তবে এটির সহজ উত্তরটি হ'ল:
timeout = timein.astimezone(pytz.timezone("GMT"))
উদাহরণস্বরূপ GMT রূপান্তর করতে। অবশ্যই, স্থানীয় বা অন্যথায় আপনার ইচ্ছামত অন্য যে কোনও সময় অঞ্চলকে / রূপান্তর করতে, পাইটজ বোঝে উপযুক্ত টাইমজোন স্ট্রিংটি ব্যবহার করুন (পাইটজ.ল_টাইমজোন থেকে) from দিবালোক সংরক্ষণের সময়টি তখন বিবেচনায় নেওয়া হয়।