পাইথনের তারিখ স্ট্রিং তারিখের অবজেক্ট


345

আমি কীভাবে স্ট্রিংটিকে পাইথনের ডেটিং অবজেক্টে রূপান্তর করব?

স্ট্রিংটি হ'ল: "24052010"(বিন্যাসের সাথে সম্পর্কিত "%d%m%Y":)

আমি ডেটটাইম.ডেটটাইম অবজেক্ট চাই না, বরং ডেটটাইম ডেট চাই।

উত্তর:


586

আপনি ব্যবহার করতে পারেন strptimeমধ্যে datetimePython- র প্যাকেজ:

>>> import datetime
>>> datetime.datetime.strptime('24052010', "%d%m%Y").date()
datetime.date(2010, 5, 24)

আমি আমার ইনপুট স্ট্রিংটির বছরটি বাদ না দিয়ে একই ধরণের প্রক্রিয়াটির চেষ্টা করছি, সুতরাং এটি '2405' বলে মনে হচ্ছে। ডিফল্ট হিসাবে, বছর হিসাবে নেওয়া হয় 1900। '2902' এর মতো ফেব্রুয়ারির তারিখটি পার্স করার সময় সমস্যাটি দেখা দেয়। আমি এই ত্রুটি পেয়েছি ValueError: day is out of range for month। পার্স করার সময় আমি কীভাবে ডিফল্ট বছর সেট করতে পারি তা নিশ্চিত নয়।
শুভম নায়েক 13


59

সরাসরি সম্পর্কিত প্রশ্ন:

কি আছে যদি

datetime.datetime.strptime("2015-02-24T13:00:00-08:00", "%Y-%B-%dT%H:%M:%S-%H:%M").date()

এবং আপনি পান:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/_strptime.py", line 308, in _strptime
    format_regex = _TimeRE_cache.compile(format)
  File "/usr/local/lib/python2.7/_strptime.py", line 265, in compile
    return re_compile(self.pattern(format), IGNORECASE)
  File "/usr/local/lib/python2.7/re.py", line 194, in compile
    return _compile(pattern, flags)
  File "/usr/local/lib/python2.7/re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: redefinition of group name 'H' as group 7; was group 4

এবং আপনি চেষ্টা করেছেন:

<-24T13:00:00-08:00", "%Y-%B-%dT%HH:%MM:%SS-%HH:%MM").date()

তবে আপনি এখনও উপরে ট্রেসব্যাক পাবেন।

উত্তর:

>>> from dateutil.parser import parse
>>> from datetime import datetime
>>> parse("2015-02-24T13:00:00-08:00")
datetime.datetime(2015, 2, 24, 13, 0, tzinfo=tzoffset(None, -28800))

1
2015-07-20 09: 46: 55 + 00: 00 আমার কাছে এই জাতীয় ডেটা রয়েছে, আমি কীভাবে তারিখ অবজেক্ট পেতে পারি?
হার্দিক গজ্জর

"2015-07-20 09: 46: 55 + 00: 00" থেকে "2015-07-20T09: 46: 55-00: 00" তে আপনার ডেটা পরিবর্তন করতে পুনরায় (নিয়মিত প্রকাশ) মডিউলটি ব্যবহার করুন। তারপরে একটি তারিখ অবজেক্টটি পেতে ডেটুটিল.পার্স ব্যবহার করুন।
শোপেনহয়ের

1
আপনাকে ধন্যবাদ, আসলে সমস্যা ছিল ডিক টাইপ অবজেক্ট এবং আমি কেবল ডিক্টেট ব্যবহার করে সমাধান পেয়েছি
হার্ডিক

2
আর একটি ধারণা হ'ল ম্যানুয়ালটি ডকস.পিথন.আর.আর / 3 / লিবারি /… পড়ুন এবং লক্ষ্য করুন যে% বি "লোকেলের পুরো নাম হিসাবে মাস" for যা "জানুয়ারী" বা "ডিসেম্বর" এর মতো তাই "02" পার্স হতে যাচ্ছে না।
23:48

1
এতে তারিখের ফর্ম্যাট স্ট্রিংটি ভুল, এটি% B না হওয়া% m হওয়া উচিত
ঘোষণাকারী

24

আপনি যদি অলস হন এবং স্ট্রিং লিটারেলের সাথে লড়াই করতে না চান, আপনি কেবল parserমডিউলটির সাথে যেতে পারেন ।

from dateutil import parser
dt = parser.parse("Jun 1 2005  1:33PM")
print(dt.year, dt.month, dt.day,dt.hour, dt.minute, dt.second)
>2005 6 1 13 33 0

কেবলমাত্র একটি পার্শ্ব নোট , আমরা anyস্ট্রিং প্রতিনিধিত্বের সাথে ম্যাচ করার চেষ্টা করছি , এটি 10x এর চেয়ে ধীরstrptime


খুব সহজ সমাধান, ধন্যবাদ। আমি কোনও এক্সেল দীর্ঘ তারিখকে রূপান্তর করার চেষ্টা করছিলাম যা প্রদর্শিত হচ্ছেMonday, June 03, 2019
জেফ ব্লুমেল

5

আপনার মত একটি তারিখ স্ট্রিং রয়েছে, "24052010" এবং আপনি এটির জন্য তারিখ অবজেক্ট চান,

from datetime import datetime
cus_date = datetime.strptime("24052010", "%d%m%Y").date()

এই cus_date আপনাকে তারিখ অবজেক্ট দেবে।

আপনি এটি ব্যবহার করে আপনার তারিখ অবজেক্ট থেকে তারিখের স্ট্রিং পুনরুদ্ধার করতে পারেন,

cus_date.strftime("%d%m%Y")

3

arrowপাইথনের তারিখে ম্যানিপুলেশন করতে সত্যই দুর্দান্ত নামে আরও একটি গ্রন্থাগার রয়েছে ।

import arrow
import datetime

a = arrow.get('24052010', 'DMYYYY').date()
print(isinstance(a, datetime.date)) # True

1

ডেটা রূপান্তর করতে সময় মডিউল ব্যবহার করুন।

টুকিটাকি সংকেতলিপি:

import time 
tring='20150103040500'
var = int(time.mktime(time.strptime(tring, '%Y%m%d%H%M%S')))
print var
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.