ইউটিসি ডেটটাইম স্ট্রিংকে স্থানীয় তারিখের সময় রূপান্তর করুন


206

আমাকে কখনই ইউটিসিতে এবং থেকে সময় রূপান্তর করতে হয় নি। আমার অ্যাপ্লিকেশনটির টাইমজোন সচেতন হওয়ার জন্য সম্প্রতি একটি অনুরোধ ছিল এবং আমি নিজেকে চেনাশোনাগুলিতে চালিয়ে যাচ্ছি। স্থানীয় সময়কে ইউটিসিতে রূপান্তর করার বিষয়ে প্রচুর তথ্য, যা আমি মোটামুটি প্রাথমিক অবস্থায় পেয়েছি (সম্ভবত আমি এটিও ভুল করে চলেছি), তবে ইউটিসি সময়কে সহজেই শেষ ব্যবহারকারীদের সময় অঞ্চলে রূপান্তর করার কোনও তথ্য আমি পাই না।

সংক্ষেপে, এবং অ্যান্ড্রয়েড অ্যাপ্লিকেশন আমাকে (অ্যাপেনজিন অ্যাপ) ডেটা প্রেরণ করে এবং সেই ডেটার মধ্যে একটি টাইমস্ট্যাম্প। এই টাইমস্ট্যাম্পটি অবাক করার জন্য অবাক সময় ব্যবহার করছি:

datetime.utcfromtimestamp(timestamp)

কাজ করে মনে হচ্ছে। যখন আমার অ্যাপ্লিকেশন ডেটা সঞ্চয় করে, এটি 5 ঘন্টা এগিয়ে সংরক্ষণ করা হয় (আমি EST -5)

ডেটা অ্যাপিনজিনের বিগ টেবলে সংরক্ষণ করা হচ্ছে এবং পুনরুদ্ধার করার পরে এটি একটি স্ট্রিং হিসাবে প্রকাশিত হয়:

"2011-01-21 02:37:21"

আমি কীভাবে এই স্ট্রিংটিকে ব্যবহারকারীদের সঠিক সময় অঞ্চলে একটি ডেটটাইমে রূপান্তর করব?

এছাড়াও, ব্যবহারকারীদের টাইমজোন তথ্যের জন্য প্রস্তাবিত স্টোরেজ কী? (আপনি সাধারণত tz তথ্য কীভাবে সংরক্ষণ করেন যেমন: "-5: 00" বা "EST" ইত্যাদি ইত্যাদি?) আমি নিশ্চিত যে আমার প্রথম প্রশ্নের উত্তরের উত্তরটিতে একটি প্যারামিটার থাকতে পারে।



এই উত্তরটি দেখায় যে কীভাবে এটি একটি সহজ উপায়ে সমাধান করা যায়।
জুন

উত্তর:


402

আপনি যদি নিজের tzinfoজিনিস সরবরাহ করতে না চান তবে অজগর-তারিখের লাইব্রেরিটি দেখুন। এটি tzinfoএকটি জোনিনফোর (ওলসন) ডাটাবেসের শীর্ষে বাস্তবায়ন সরবরাহ করে যাতে আপনি কিছুটা ক্যানোনিকাল নাম দিয়ে সময় অঞ্চল নিয়মগুলি উল্লেখ করতে পারেন।

from datetime import datetime
from dateutil import tz

# METHOD 1: Hardcode zones:
from_zone = tz.gettz('UTC')
to_zone = tz.gettz('America/New_York')

# METHOD 2: Auto-detect zones:
from_zone = tz.tzutc()
to_zone = tz.tzlocal()

# utc = datetime.utcnow()
utc = datetime.strptime('2011-01-21 02:37:21', '%Y-%m-%d %H:%M:%S')

# Tell the datetime object that it's in UTC time zone since 
# datetime objects are 'naive' by default
utc = utc.replace(tzinfo=from_zone)

# Convert time zone
central = utc.astimezone(to_zone)

strptimeব্যবহার দেখানোর জন্য প্রসারিত উদাহরণ সম্পাদনা করুন

আরও ভাল এন্ট্রি পয়েন্ট পদ্ধতি দেখানোর জন্য 2 স্থির এপিআই ব্যবহার সম্পাদনা করুন

টাইমজোনগুলির জন্য 3 টি অন্তর্ভুক্ত স্বয়ংক্রিয় সনাক্তকরণ পদ্ধতি (ইয়ারিন) সম্পাদনা করুন


1
আমার আগের মন্তব্যে, আমি আমদানি করতে dateutil.tzএবং ব্যবহার করতে সক্ষম হয়েছি tz.tzutc()এবং tz.tzlocal()টাইম জোনের অবজেক্ট হিসাবে আমি সন্ধান করছি। দেখে মনে হচ্ছে আমার সিস্টেমে টাইম জোনের ডাটাবেস ভাল (আমি চেক ইন করেছি /usr/share/zoneinfo)। নিশ্চিত ছিল না কি হয়েছে।
বেন ক্রিগার

1
@ বেনজামিন আপনি সঠিক পথে আছেন tzমডিউল এই লাইব্রেরি ব্যবহার করা সঠিক এন্ট্রি পয়েন্ট হয়। আমি এই প্রতিফলিত করতে আমার উত্তর আপডেট করেছি। dateutil.zoneinfoআমি যে মডিউলটি পূর্বে প্রদর্শন করছিলাম সেটি মডিউলটি অভ্যন্তরীণভাবে অভ্যন্তরীণভাবে ব্যবহৃত হয় tzযদি এটি সিস্টেমের জোনিনফো ডিবি সনাক্ত করতে না পারে তবে তা পিছিয়ে পড়া হিসাবে ব্যবহৃত হয় । আপনি যদি লাইব্রেরির ভিতরে সন্ধান করেন তবে দেখতে পাবেন যে প্যাকেজটিতে একটি জোনিনফো ডিবি টারবাল রয়েছে এটি যদি আপনার সিস্টেমের ডিবি না খুঁজে পায় তবে এটি ব্যবহার করে। আমার পুরানো উদাহরণটি সরাসরি সেই ডিবিটিকে আঘাত করার চেষ্টা করছিল এবং আমি অনুমান করছি যে ব্যক্তিগত প্রাইভেট ডিবি লোড করার ক্ষেত্রে আপনার সমস্যা হয়েছে (কোনওভাবে পাইথনের পথে নেই?)
জো হোলোয়


1
@ জেএসএবেস্টিয়ান এটি # 225
রোহমের

2
@ ব্র্যাঙ্কিপ এটি আপনার অ্যাপ্লিকেশনটি কত পরিশীলিত হওয়া দরকার তার উপর নির্ভর করে, তবে সাধারণ অ্যাপ্লিকেশনগুলিতে হ্যাঁ, এটি একটি সমস্যা। সবার আগে বছরের যে সময়টি নির্ভর করে, কিছু সময় অঞ্চল ডিএসটিকে সম্মান জানায় এবং যোগ করতে কত ঘন্টার সংখ্যা পরিবর্তন হতে পারে। দ্বিতীয়ত, সময় অঞ্চলের নিয়মগুলি নির্বিচারে সময়ের সাথে পরিবর্তিত হয় সুতরাং আপনি যদি কোনও অতীত তারিখ / সময় নিয়ে কাজ করছেন তবে আপনাকে সেই সময়কালে বৈধ যে নিয়মগুলি সময় মতো কার্যকর ছিল তা প্রয়োগ করতে হবে, বর্তমান সময় নয়। এজন্য পর্দার আড়ালে ওলসন টিজেড ডাটাবেসকে উপকৃত করে এমন একটি এপিআই ব্যবহার করা ভাল।
জো হোলোয়

44

এখানে একটি স্থিতিস্থাপক পদ্ধতি যা কোনও বাহ্যিক গ্রন্থাগারের উপর নির্ভর করে না:

from datetime import datetime
import time

def datetime_from_utc_to_local(utc_datetime):
    now_timestamp = time.time()
    offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(now_timestamp)
    return utc_datetime + offset

এটি ডালবয়জয়ের উদাহরণের সময়কালীন বিষয়গুলি এড়িয়ে চলে। এবং এরিক ভ্যান ওস্টেনের সংশোধনীর সময়সীমা কম।

একটি আকর্ষণীয় পাদটীকা হিসাবে, উপরে উল্লিখিত টাইমজোন অফসেটটি নিম্নলিখিত আপাতদৃষ্টিতে সমতুল্য অভিব্যক্তি থেকে পৃথক হতে পারে, সম্ভবত দিবালোকের সঞ্চয়ী নিয়মের পরিবর্তনের কারণে:

offset = datetime.fromtimestamp(0) - datetime.utcfromtimestamp(0) # NO!

হালনাগাদ: এই স্নিপেটটিতে বর্তমান সময়ের ইউটিসি অফসেট ব্যবহার করার দুর্বলতা রয়েছে, যা ইনপুট ডেটটাইমের ইউটিসি অফসেট থেকে পৃথক হতে পারে। অন্য একটি সমাধানের জন্য এই উত্তরের মন্তব্য দেখুন।

বিভিন্ন সময় ঘুরে দেখার জন্য, সময় অতিবাহিত হওয়া সময় থেকে পর্বের সময়টি ধরুন I আমি যা করি তা এখানে:

def utc2local (utc):
    epoch = time.mktime(utc.timetuple())
    offset = datetime.fromtimestamp (epoch) - datetime.utcfromtimestamp (epoch)
    return utc + offset

এটি ভালভাবে কাজ করে এবং সময় এবং তারিখের সময় ব্যতীত অন্য কিছুই প্রয়োজন।
মাইক_কে

6
@ মাইক_কে: তবে এটি ভুল। এটি ডিএসটি বা টাইমজোনগুলিকে সমর্থন করে না যা অন্য কারণে অন্যান্য ইউটিসি অফসেটে বিচ্ছিন্ন ছিল। pytzসদৃশ ডিবি ব্যতীত সম্পূর্ণ সমর্থন অসম্ভব, পিইপি -৩৩১ দেখুন। যদিও আপনি stdlib- সমাধানটি লিখতে পারেন যা ইতিমধ্যে historicalতিহাসিক টাইমজোন ডিবি যেমন, লিনাক্স, ওএস এক্স রয়েছে এমন সিস্টেমে এই জাতীয় ক্ষেত্রে কাজ করে, আমার উত্তরটি দেখুন
jfs

@ জেফেসেবাস্টিয়ান: আপনি বলেছেন যে এই কোডটি সাধারণভাবে কাজ করে না তবে এটি ওএস এক্স এবং লিনাক্সেও কাজ করে বলে। আপনি কি বলতে চান যে এই কোডটি উইন্ডোজটিতে কাজ করে না?
ডেভিড ফস্টার 21

2
@ ডেভিডফোস্টার: আপনার কোডটি লিনাক্স এবং ওএস এক্সেও ব্যর্থ হতে পারে। আপনার এবং আমার স্ট্যান্ডলিব-সলিউশন সমাধানের মধ্যে পার্থক্য হ'ল আপনার বর্তমান অফসেটটি ব্যবহার করুন যা সময়ে utc_datetimeসময়ে অফসেট থেকে আলাদা হতে পারে ।
jfs

1
ভাল কল. এটি একটি খুব সূক্ষ্ম পার্থক্য। ইউটিসি অফসেট সময়ের সাথে সাথে পরিবর্তন করতে পারে। দীর্ঘশ্বাস ফেলুন
ডেভিড ফস্টার

23

দেখুন DATETIME উপর ডকুমেন্টেশন tzinfo বস্তু। আপনি নিজেকে সমর্থন করতে চান এমন সময় অঞ্চলগুলি আপনাকে প্রয়োগ করতে হবে। ডকুমেন্টেশনের নীচে উদাহরণগুলি।

এখানে একটি সাধারণ উদাহরণ:

from datetime import datetime,tzinfo,timedelta

class Zone(tzinfo):
    def __init__(self,offset,isdst,name):
        self.offset = offset
        self.isdst = isdst
        self.name = name
    def utcoffset(self, dt):
        return timedelta(hours=self.offset) + self.dst(dt)
    def dst(self, dt):
            return timedelta(hours=1) if self.isdst else timedelta(0)
    def tzname(self,dt):
         return self.name

GMT = Zone(0,False,'GMT')
EST = Zone(-5,False,'EST')

print datetime.utcnow().strftime('%m/%d/%Y %H:%M:%S %Z')
print datetime.now(GMT).strftime('%m/%d/%Y %H:%M:%S %Z')
print datetime.now(EST).strftime('%m/%d/%Y %H:%M:%S %Z')

t = datetime.strptime('2011-01-21 02:37:21','%Y-%m-%d %H:%M:%S')
t = t.replace(tzinfo=GMT)
print t
print t.astimezone(EST)

আউটপুট

01/22/2011 21:52:09 
01/22/2011 21:52:09 GMT
01/22/2011 16:52:09 EST
2011-01-21 02:37:21+00:00
2011-01-20 21:37:21-05:00a

গ্রহণ করার জন্য ধন্যবাদ! আপনার নির্দিষ্ট উদাহরণের সময়টি অনুবাদ করতে আমি এটি সামান্য আপডেট করেছি। সময়ের পার্সিং ডক্সকে একটি "নিষ্পাপ" সময় বলে তোলে। ব্যবহারের replaceজিএমটি থেকে সময় অঞ্চল নির্ধারণ করে এবং এটি সময় অঞ্চল "সচেতন", তারপরে ব্যবহার করতে astimezoneঅন্য সময় অঞ্চল রূপান্তর করবে।
মার্ক টোলোনেন

জো এর উত্তরের জন্য অদলবদল জন্য দুঃখিত। প্রযুক্তিগতভাবে আপনার উত্তরটি কাঁচা অজগর দিয়ে কীভাবে করবেন তা ব্যাখ্যা করে (যা জানা ভাল) তবে তিনি যে লাইব্রেরিটির পরামর্শ দিয়েছিলেন তা আমাকে দ্রুত সমাধানে নিয়ে আসে।
ম্যাটটোডড

4
দেখে মনে হচ্ছে না এটি স্বয়ংক্রিয়ভাবে দিবালোকের সঞ্চয় সময় পরিচালনা করে।
গ্রিংগো সুভেভ

@ গ্রিংসুয়াভ: এটি বোঝানো হয়নি। এর জন্য নিয়মগুলি জটিল এবং প্রায়শই পরিবর্তিত হয়।
মার্ক টোলোনেন

19

যদি আপনি একটি দ্ব্যর্থক স্থানীয় সময়ের সাথে সম্পর্কিত সময়ের জন্য সঠিক ফলাফল পেতে চান (উদাহরণস্বরূপ, ডিএসটি রূপান্তরকালে) এবং / অথবা স্থানীয় ইউটিসি অফসেট আপনার স্থানীয় সময় অঞ্চলে বিভিন্ন সময়ে আলাদা হয় তবে সময় অঞ্চলগুলি ব্যবহার করুন pytz:

#!/usr/bin/env python
from datetime import datetime
import pytz    # $ pip install pytz
import tzlocal # $ pip install tzlocal

local_timezone = tzlocal.get_localzone() # get pytz tzinfo
utc_time = datetime.strptime("2011-01-21 02:37:21", "%Y-%m-%d %H:%M:%S")
local_time = utc_time.replace(tzinfo=pytz.utc).astimezone(local_timezone)

10

আপনি যদি অন্য কোনও মডিউল ছাড়াও ব্যবহার করতে না চান তবে এই উত্তরটি সহায়ক হওয়া উচিত datetime

datetime.utcfromtimestamp(timestamp)একটি নিষ্পাপ datetimeবস্তু (সচেতন নয়) প্রদান করে। সচেতন ব্যক্তিরা টাইমজোন সচেতন এবং নির্বুদ্ধ নয়। আপনি যদি সময় অঞ্চলগুলির মধ্যে রূপান্তর করতে চান তবে আপনাকে সচেতন করতে চান (যেমন ইউটিসি এবং স্থানীয় সময়ের মধ্যে)।

আপনি যদি এটি শুরু করার তারিখটি ইনস্ট্যান্ট করছেন না তবে আপনি datetimeইউটিসি সময়ে একটি নিষ্পাপ বস্তু তৈরি করতে পারেন তবে রূপান্তর করার জন্য আপনি পাইথন ৩.x কোডটি চেষ্টা করতে চাইতে পারেন:

import datetime

d=datetime.datetime.strptime("2011-01-21 02:37:21", "%Y-%m-%d %H:%M:%S") #Get your naive datetime object
d=d.replace(tzinfo=datetime.timezone.utc) #Convert it to an aware datetime object in UTC time.
d=d.astimezone() #Convert it to your local timezone (still aware)
print(d.strftime("%d %b %Y (%I:%M:%S:%f %p) %Z")) #Print it with a directive of choice

ভুল করে ধরে ধরে নিবেন না যে আপনার টাইমজোনটি বর্তমানে এমডিটি থাকলে যে ডাইটলাইট সেভিংসগুলি এমএসটি প্রিন্ট করে সেহেতু উপরের কোডটির সাথে কাজ করে না। আপনি নোট করবেন যে আপনি মাস আগস্টে পরিবর্তন করলে এটি এমডিটি প্রিন্ট করবে।

সচেতন datetimeঅবজেক্ট পাওয়ার (আর পাইথন 3.x এও) আরও সহজ উপায় হ'ল এটি শুরু করার জন্য নির্দিষ্ট সময় অঞ্চল দিয়ে তৈরি করা। ইউটিসি ব্যবহার করে এখানে একটি উদাহরণ দেওয়া হয়েছে:

import datetime, sys

aware_utc_dt_obj=datetime.datetime.now(datetime.timezone.utc) #create an aware datetime object
dt_obj_local=aware_utc_dt_obj.astimezone() #convert it to local time

#The following section is just code for a directive I made that I liked.
if sys.platform=="win32":
    directive="%#d %b %Y (%#I:%M:%S:%f %p) %Z"
else:
    directive="%-d %b %Y (%-I:%M:%S:%f %p) %Z"

print(dt_obj_local.strftime(directive))

যদি আপনি পাইথন ২.x ব্যবহার করেন তবে আপনাকে সম্ভবত সাবক্লাস করতে হবে datetime.tzinfoএবং একটি সচেতন datetimeঅবজেক্ট তৈরি করতে সহায়তা করার জন্য এটি ব্যবহার করতে হবে , যেহেতু datetime.timezoneপাইথন ২.x-তে নেই।


8

জ্যাঙ্গো ব্যবহার করে, আপনি এই timezone.localtimeপদ্ধতিটি ব্যবহার করতে পারেন :

from django.utils import timezone
date 
# datetime.datetime(2014, 8, 1, 20, 15, 0, 513000, tzinfo=<UTC>)

timezone.localtime(date)
# datetime.datetime(2014, 8, 1, 16, 15, 0, 513000, tzinfo=<DstTzInfo 'America/New_York' EDT-1 day, 20:00:00 DST>)

2

আপনি তীর ব্যবহার করতে পারেন

from datetime import datetime
import arrow

now = datetime.utcnow()

print(arrow.get(now).to('local').format())
# '2018-04-04 15:59:24+02:00'

আপনি কিছু দিয়ে খাওয়াতে পারেন arrow.get()। টাইমস্ট্যাম্প, আইসো স্ট্রিং ইত্যাদি


1

আমি traditionতিহ্যগতভাবে এটিকে সীমান্তে স্থগিত করি - ব্যাকএন্ড থেকে টাইমস্ট্যাম্প বা ইউটিসি-তে অন্য কোনও ডেটটাইম ফর্ম্যাট হিসাবে সময় প্রেরণ করুন, তারপরে ক্লায়েন্টকে টাইমজোনটি অফসেটটি খুঁজে বের করতে এবং যথাযথ টাইমজোনটিতে এই ডেটা রেন্ডার করুন।

ওয়েব অ্যাপের জন্য জাভাস্ক্রিপ্টে এটি করা বেশ সহজ - আপনি বিল্টিন পদ্ধতিগুলি ব্যবহার করে ব্রাউজারের টাইমজোনটি সহজেই অফসেট থেকে বের করতে পারেন এবং তারপরে ব্যাকএন্ড থেকে ডেটা সঠিকভাবে রেন্ডার করতে পারেন।


3
এটি এমন অনেক ক্ষেত্রে ভাল কাজ করে যেখানে আপনি কেবল প্রদর্শনের জন্য স্থানীয়করণ করছেন। কখনও কখনও, তবে আপনাকে ব্যবহারকারীর টাইম জোনের উপর ভিত্তি করে কিছু ব্যবসায়িক যুক্তি সম্পাদন করতে হবে এবং আপনি অ্যাপ্লিকেশন সার্ভার স্তরকে রূপান্তর করতে সক্ষম হতে চাইবেন।
জো হোলোয়ে

1

আপনি calendar.timegmআপনার সময়টিকে সেকেন্ডে রূপান্তর করতে ব্যবহার করতে পারেন ইউনিক্সের সূচনা হওয়ার পরে এবং time.localtimeফিরে রূপান্তর করতে:

import calendar
import time

time_tuple = time.strptime("2011-01-21 02:37:21", "%Y-%m-%d %H:%M:%S")
t = calendar.timegm(time_tuple)

print time.ctime(t)

দেয় Fri Jan 21 05:37:21 2011(কারণ আমি ইউটিসিতে +0: 00 টাইমজোন)।


1
import datetime

def utc_str_to_local_str(utc_str: str, utc_format: str, local_format: str):
    """
    :param utc_str: UTC time string
    :param utc_format: format of UTC time string
    :param local_format: format of local time string
    :return: local time string
    """
    temp1 = datetime.datetime.strptime(utc_str, utc_format)
    temp2 = temp1.replace(tzinfo=datetime.timezone.utc)
    local_time = temp2.astimezone()
    return local_time.strftime(local_format)

utc = '2018-10-17T00:00:00.111Z'
utc_fmt = '%Y-%m-%dT%H:%M:%S.%fZ'
local_fmt = '%Y-%m-%dT%H:%M:%S+08:00'
local_string = utc_str_to_local_str(utc, utc_fmt, local_fmt)
print(local_string)   # 2018-10-17T08:00:00+08:00

উদাহরণস্বরূপ, আমার টাইমজোনটি ' +08: 00 '। ইনপুট utc = 2018-10-17T00: 00: 00.111Z , তারপরে আমি আউটপুট পাব = 2018-10-17T08: 00: 00 + 08: 00


1
আপনার সরল পাঠ্যে আপনার সমস্যার আরও ভাল বিবরণ দেওয়া উচিত, যেখানে আপনি কী কী অর্জন করতে চাইছেন এবং কোনটি আপনার সমস্যা তা অন্যান্য ব্যবহারকারীদের ব্যাখ্যা করুন
m33n

1

এখানে উত্তর থেকে আপনি আপনার কম্পিউটারে সেট করা স্থানীয় সময় থেকে রূপান্তর করতে সময় মডিউলটি ব্যবহার করতে পারেন:

utc_time = time.strptime("2018-12-13T10:32:00.000", "%Y-%m-%dT%H:%M:%S.%f")
utc_seconds = calendar.timegm(utc_time)
local_time = time.localtime(utc_seconds)

0

এখানে একটি দ্রুত এবং নোংরা সংস্করণ যা সময়ের ব্যবধানটি কার্যকর করতে স্থানীয় সিস্টেম সেটিংস ব্যবহার করে। দ্রষ্টব্য: আপনার বর্তমান সিস্টেম চালু নেই এমন টাইমজোনতে রূপান্তর করতে হলে এটি কাজ করবে না B আমি এটি বিএসটি টাইমজোন এর অধীনে ইউকে সেটিংসের মাধ্যমে পরীক্ষা করেছি have

from datetime import datetime
def ConvertP4DateTimeToLocal(timestampValue):
   assert isinstance(timestampValue, int)

   # get the UTC time from the timestamp integer value.
   d = datetime.utcfromtimestamp( timestampValue )

   # calculate time difference from utcnow and the local system time reported by OS
   offset = datetime.now() - datetime.utcnow()

   # Add offset to UTC time and return it
   return d + offset

এটি হওয়া উচিত datetime.fromtimestamp(ts): পজিক্স টাইমস্ট্যাম্প (ফ্লোট সেকেন্ড) -> স্থানীয় সময়ে ডেটটাইম অবজেক্ট (ওএস স্থানীয় সময় অঞ্চল জন্য ইউনিক্সে তবে অতীতের তারিখগুলির জন্য উইন্ডোজে না তবে অতীত তারিখগুলি স্মরণ করে তবে এটি ভাল কাজ করে) well অন্যথায় পাইজ ব্যবহার করা যেত।
jfs

আমি নিম্নলিখিতটি করার পরামর্শ দিতে পারি: offset = datetime.utcnow().replace(minute=0, second=0, microsecond=0) - datetime.now().replace(minute=0, second=0, microsecond=0) আমি এটি ছাড়াই অদ্ভুত মাইক্রোসেকেন্ডের পার্থক্য পেয়েছি।
এরিক ভান ওস্টেন

@ এরিকানঅওস্টেন: আপনি কি datetime.fromtimestamp(ts)উত্তরের পরিবর্তে চেষ্টা করেছেন ?
jfs

0

ফ্র্যাঙ্কস্যান্ডগুলি থেকে একটি সুবিধাজনক পদ্ধতিতে উত্তর একত্রিত করা।

import calendar
import datetime

def to_local_datetime(utc_dt):
    """
    convert from utc datetime to a locally aware datetime according to the host timezone

    :param utc_dt: utc datetime
    :return: local timezone datetime
    """
    return datetime.datetime.fromtimestamp(calendar.timegm(utc_dt.timetuple()))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.