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_string
bir dizi olarak sahip olmalısınız .
format1
girdi 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 parse
iş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.x
ihtiyaç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.
datetime
veya time
modü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 s
tekrar bir datetime
nesneye 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