কীভাবে পাইথনের ডেটটাইমে পূর্ণসংখ্যা টাইমস্ট্যাম্প রূপান্তর করতে হয়


187

আমার কাছে একটি ডেটা ফাইল রয়েছে "1331856000000" এর মতো টাইমস্ট্যাম্পগুলি। দুর্ভাগ্যক্রমে, আমার কাছে ফর্ম্যাটটির জন্য প্রচুর ডকুমেন্টেশন নেই, তাই টাইমস্ট্যাম্পটি কীভাবে ফরম্যাট করা যায় তা আমি নিশ্চিত নই। আমি পাইথনের স্ট্যান্ডার্ড datetime.fromordinal()এবং আরও datetime.fromtimestamp()কয়েকজন চেষ্টা করেছি , কিন্তু কিছুই মেলে না। আমি নিশ্চিত যে নির্দিষ্ট নম্বরটি বর্তমান তারিখের সাথে সামঞ্জস্য করে (যেমন, ২০১২-১-16-১-16) তবে এর চেয়ে বেশি কিছু নয়।

আমি এই নম্বরটি কীভাবে রূপান্তর করব datetime?

উত্তর:


328

datetime.datetime.fromtimestamp()সঠিক, আপনি সম্ভবত মিলিসেকেন্ডে টাইমস্ট্যাম্প না থাকলে (জাভাস্ক্রিপ্টের মতো), তবে fromtimestamp()ইউনিক্স টাইমস্ট্যাম্পটি সেকেন্ডে প্রত্যাশা করে।

এটি এর মতো করুন:

>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)

এবং ফলাফল:

>>> date
datetime.datetime(2012, 3, 16, 1, 0)

এটি আপনার প্রশ্নের উত্তর দেয়?

সম্পাদনা : জেএফ সেবাস্টিয়ান সঠিকভাবে প্রস্তাব সত্য বিভাজন ব্যবহার দ্বারা 1e3(ভাসা 1000)। পার্থক্যটি তাৎপর্যপূর্ণ, আপনি যদি সুনির্দিষ্ট ফলাফল পেতে চান তবে এইভাবে আমি আমার উত্তর পরিবর্তন করেছি। পাইথন ২.x এর ডিফল্ট আচরণ থেকে পার্থক্যের ফলাফল আসে, যা সর্বদা ফিরে আসে int( /অপারেটর ব্যবহার করে ) intদ্বারা ভাগ করার সময় ( intএটিকে তল বিভাজন বলা হয় )। বিভাজকের 1000(একটি হওয়া int) বিভাজকের পরিবর্তে ( ভাসমান হিসাবে 1e3প্রতিনিধিত্ব করা 1000) বা float(1000)(বা 1000.ইত্যাদি) দিয়ে বিভাগটি সত্য বিভাগে পরিণত হয় । পাইথন 2.x আয় floatযখন বিভাজক intদ্বারা float, floatদ্বারা int,floatfloatইত্যাদি দ্বারা এবং যখন fromtimestamp()পদ্ধতিতে পাস করা টাইমস্ট্যাম্পে কিছু ভগ্নাংশ রয়েছে, তখন এই পদ্ধতির ফলাফলটিতে সেই ভগ্নাংশের অংশ (মাইক্রোসেকেন্ডের সংখ্যা হিসাবে) সম্পর্কিত তথ্যও রয়েছে।


13
সত্য বিভাগটি ব্যবহার করুন:/ 1e3
jfs

@ জেফাসেবাস্টিয়ান: আপনি সম্পূর্ণরূপে সঠিক, আমি আমার উত্তর সম্পাদনা করেছি এবং কেন আপনি সঠিক তা সম্পর্কে কিছু ব্যাখ্যা যুক্ত করেছি। আপনি যদি ব্যাখ্যাটির সাথে একমত না হন তবে দয়া করে আমাকে জানান।
টেডেক

@ মনু-ফট্টো: তাতে আসলে কিছু যায় আসে না। x * 0.001এবং x / 1e3উভয়ই একই, পার্থক্য স্বরলিপি এবং দৈর্ঘ্যের মধ্যে (মূলটি সংক্ষিপ্ত) is কিছু লোকের পক্ষে এটি আপনি যে প্রস্তাবিত গুণক বিপরীতমুখী সংখ্যার ( 1/x) দ্বারা গুণনের পরিবর্তে সংখ্যা দ্বারা ভাগ করে তা পরিষ্কার হতে পারে । তবে বিকল্প পদ্ধতির প্রস্তাব দেওয়ার জন্য ধন্যবাদ।
টাডেক

57
এই ফাংশনটি বিপজ্জনক, কারণ আপনাকে টাইমজোন বিবেচনায় নিয়েছে। Utffromtimestamp দেখার চেষ্টা করুন
হাইম বেন্ডার

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