দয়া করে আমার কোডে কি সমস্যা হয়েছে:
import datetime
d = "2013-W26"
r = datetime.datetime.strptime(d, "%Y-W%W")
print(r)
"2013-01-01 00:00:00" প্রদর্শন করুন, ধন্যবাদ।
দয়া করে আমার কোডে কি সমস্যা হয়েছে:
import datetime
d = "2013-W26"
r = datetime.datetime.strptime(d, "%Y-W%W")
print(r)
"2013-01-01 00:00:00" প্রদর্শন করুন, ধন্যবাদ।
উত্তর:
একটি তারিখ উত্পন্ন করতে একটি সপ্তাহের সংখ্যা যথেষ্ট নয়; আপনার পাশাপাশি সপ্তাহের একটি দিন দরকার। একটি ডিফল্ট যুক্ত করুন:
import datetime
d = "2013-W26"
r = datetime.datetime.strptime(d + '-1', "%Y-W%W-%w")
print(r)
-1এবং -%wপ্যাটার্ন পার্সার সেই সপ্তাহের সোমবার বাছাই বলে। এই ফলাফলগুলি:
2013-07-01 00:00:00
%Wসোমবার সপ্তাহের প্রথম দিন হিসাবে ব্যবহার করে। আপনি নিজের সপ্তাহের দিন বাছাই করতে গিয়ে, আপনি যদি তা থেকে সরে যান তবে আপনি অপ্রত্যাশিত ফলাফল পেতে পারেন।
ডকুমেন্টেশনে strftime()ও strptime()আচরণ বিভাগটি দেখুন , পাদটীকা 4:
যখন সঙ্গে ব্যবহার
strptime()পদ্ধতি,%Uএবং%Wযখন সপ্তাহে এবং বছরের দিন নির্দিষ্ট আছে শুধুমাত্র গণনার ব্যবহৃত হয়।
দ্রষ্টব্য, যদি আপনার সপ্তাহের নম্বরটি আইএসও সপ্তাহের তারিখ হয় তবে আপনি %G-W%V-%uপরিবর্তে এটি ব্যবহার করতে চাইবেন ! এই নির্দেশগুলির জন্য পাইথন 3.6 বা আরও নতুন প্রয়োজন।
if d.endswith('-W0') and r.day == 7: raise ValueError('Invalid date string, No week 0 in {}'.format(r.year))
অন্যান্য উত্তরগুলি সম্পূর্ণ করতে - আপনি যদি আইএসও সপ্তাহের নম্বরগুলি ব্যবহার করেন তবে এই স্ট্রিংটি যথাযথ (প্রদত্ত আইএসও সপ্তাহের সংখ্যার সোমবার পেতে):
import datetime
d = '2013-W26'
r = datetime.datetime.strptime(d + '-1', '%G-W%V-%u')
print(r)
%G, %V, %uএর আইএসও সমতুল হয় %Y, %W, %w, তাই এই আউটপুট:
2013-06-24 00:00:00
পাইথনে অ্যাভাইলাবে ৩.6++; থেকে ডক্স ।
পাইথন ৩.৮-তে সুবিধাজনক রয়েছে datetime.date.fromisocalendar:
>>> from datetime import date
>>> date.fromisocalendar(2020, 1, 1) # (year, week, day of week)
datetime.date(2019, 12, 30, 0, 0)
পুরানো পাইথন সংস্করণগুলিতে (3.7-) গণনাটি datetime.date.isocalendarসপ্তাহের ISO8601 অনুবর্তী সপ্তাহ নির্ধারণের জন্য তথ্যটি ব্যবহার করতে পারে :
from datetime import date, timedelta
def monday_of_calenderweek(year, week):
first = date(year, 1, 1)
base = 1 if first.isocalendar()[1] == 1 else 8
return first + timedelta(days=base - first.isocalendar()[2] + 7 * (week - 1))
উভয় সঙ্গে কাজ করে datetime.datetime।
import datetime
res = datetime.datetime.strptime("2018 W30 w1", "%Y %W w%w")
print res
সপ্তাহের দিন হিসাবে 1 যুক্ত করা হ'ল বর্তমান সপ্তাহের শুরুটি উত্পন্ন করবে। টাইমডেল্টা (দিনগুলি = 6) যোগ করা আপনাকে সপ্তাহের সমাপ্তি দেয়।
datetime.datetime(2018, 7, 23)
res = datetime.datetime.strptime("2018 W30 w1", "%Y W%W w%w")
যদি আপনার বার্ষিক বার্ষিক সংখ্যা থাকে তবে বছরের প্রথম দিনটিতে কেবল সপ্তাহের সংখ্যা যুক্ত করুন।
>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> week = 40
>>> year = 2019
>>> date = datetime.date(year,1,1)+relativedelta(weeks=+week)
>>> date
datetime.date(2019, 10, 8)
এখানে শূন্য-সপ্তাহ সহ সমস্যা সহ একটি কার্যকর ফাংশন ।