Yanıtlar:
datetime modül bu konuda size yardımcı olabilir:
datetime.datetime.strptime(date_string, format1).strftime(format2)
Spesifik örnek için yapabileceğiniz
>>> datetime.datetime.strptime('Mon Feb 15 2010', '%a %b %d %Y').strftime('%d/%m/%Y')
'15/02/2010'
>>>
date_stringbir dizi olarak sahip olmalısınız .
format1girdi tarih dizesinin biçimini ifade etmek için bir dize olması gerekir. format2çıktı alınacak hedef dize formatıdır.
Dateutil kitaplığını kurabilirsiniz . Onun parseişlevi, bir dize sizinle yaptığım gibi biçimi belirtmek zorunda kalmadan içinde ne biçim anlamaya olabilir datetime.strptime.
from dateutil.parser import parse
dt = parse('Mon Feb 15 2010')
print(dt)
# datetime.datetime(2010, 2, 15, 0, 0)
print(dt.strftime('%d/%m/%Y'))
# 15/02/2010
python 3.xihtiyaçları yüklemeyepython-dateutil pip install python-dateutil
>>> from_date="Mon Feb 15 2010"
>>> import time
>>> conv=time.strptime(from_date,"%a %b %d %Y")
>>> time.strftime("%d/%m/%Y",conv)
'15/02/2010'
dizeyi datetime nesnesine dönüştür
from datetime import datetime
s = "2016-03-26T09:25:55.000Z"
f = "%Y-%m-%dT%H:%M:%S.%fZ"
out = datetime.strptime(s, f)
print(out)
output:
2016-03-26 09:25:55
Bu soru sık sık geldiği için, işte basit bir açıklama.
datetimeveya timemodülün iki önemli işlevi vardır.
Her iki durumda da, bir biçimlendirme dizesine ihtiyacımız var. Dizenizde tarih veya saatin nasıl biçimlendirildiğini anlatan temsildir.
Şimdi bir tarih nesnemiz olduğunu varsayalım.
>>> from datetime import datetime
>>> d = datetime(2010, 2, 15)
>>> d
datetime.datetime(2010, 2, 15, 0, 0)
Bu tarihten itibaren formatta bir string oluşturmak istersek 'Mon Feb 15 2010'
>>> s = d.strftime('%a %b %d %y')
>>> print s
Mon Feb 15 10
Bunu stekrar bir datetimenesneye dönüştürmek istediğimizi varsayalım .
>>> new_date = datetime.strptime(s, '%a %b %d %y')
>>> print new_date
2010-02-15 00:00:00
Bu belgeye bakın datetime ile ilgili tüm biçimlendirme yönergeleri.
Sadece tamamlama uğruna: strptime()tarih, gün, ay vb . Adını kullanarak ayrıştırırken , yerel ayarı hesaba katmanız gerektiğini unutmayın.
Dokümanlarda da dipnot olarak bahsedilmektedir .
Örnek olarak:
import locale
print(locale.getlocale())
>> ('nl_BE', 'ISO8859-1')
from datetime import datetime
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> ValueError: time data '6-Mar-2016' does not match format '%d-%b-%Y'
locale.setlocale(locale.LC_ALL, 'en_US')
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> '2016-03-06'
@codeling ve @ user1767754: Aşağıdaki iki satır çalışacaktır. Sorulan örnek problem için tam çözümü kimsenin göndermediğini görmedim. Umarım bu yeterli açıklamadır.
import datetime
x = datetime.datetime.strptime("Mon Feb 15 2010", "%a %b %d %Y").strftime("%d/%m/%Y")
print(x)
Çıktı:
15/02/2010
Bunu pandaları kullanarak da başarabilirsiniz:
import pandas as pd
pd.to_datetime('Mon Feb 15 2010', format='%a %b %d %Y').strftime('%d/%m/%Y')
Çıktı:
'15/02/2010'
Pandas yaklaşımını aşağıdaki gibi farklı veri türleri için uygulayabilirsiniz:
import pandas as pd
import numpy as np
def reformat_date(date_string, old_format, new_format):
return pd.to_datetime(date_string, format=old_format, errors='ignore').strftime(new_format)
date_string = 'Mon Feb 15 2010'
date_list = ['Mon Feb 15 2010', 'Wed Feb 17 2010']
date_array = np.array(date_list)
date_series = pd.Series(date_list)
old_format = '%a %b %d %Y'
new_format = '%d/%m/%Y'
print(reformat_date(date_string, old_format, new_format))
print(reformat_date(date_list, old_format, new_format).values)
print(reformat_date(date_array, old_format, new_format).values)
print(date_series.apply(lambda x: reformat_date(x, old_format, new_format)).values)
Çıktı:
15/02/2010
['15/02/2010' '17/02/2010']
['15/02/2010' '17/02/2010']
['15/02/2010' '17/02/2010']
datetime kitaplığını kullanın http://docs.python.org/library/datetime.html bakın 9.1.7. especiall strptime () strftime () Davranış örnekleri http://pleac.sourceforge.net/pleac_python/datesandtimes.html