2012-10-07 24 views
5

私はフォーマットがd/m/yyyy(たとえば、2/28/1987)の日付をいくつか持っています。Pythonを使用して日付をISOでフォーマットするにはどうすればよいですか?

str_date = '2/28/1987' 
arr_str = re.split('/', str_date) 
iso_date = arr_str[2]+'-'+arr_str[0][:2]+'-'+arr_str[1] 

行うための別の方法があります: 私はISO形式でそれを持ってしたいと思います:1987年2月28日

私たちはそのように行うことができると思いますが、それは少し重いようですそれはPythonでですか?あなたがいる場合

arr_str = str_date.split('/') 

:あなたが持っている何

+0

私は巨大なリストを持っています私の最初の選択肢は、LibreOfficeのようなスプレッドシートエディタでコピー/ペーストし、oのフォーマットセルを変更することですrderは正しい書式を設定しますが、動作しません。 – Reveclair

答えて

17

あなたはdatetime moduleを使用することができます。

datetime.datetime.strptime(str_date, '%m/%d/%Y').date().isoformat() 

または、コード実行されているよう:

>>> import datetime 
>>> str_date = '2/28/1987' 
>>> datetime.datetime.strptime(str_date, '%m/%d/%Y').date().isoformat() 
'1987-02-28' 
+2

+1 is isformat()。私はそのことを知らなかった。 – Blender

1

は非常に近く、私はそれを書くだろうかですが、私はお勧めできる唯一の主要な改善は、あなたが正規表現を必要としないので、昔ながらのsplit代わりのre.split使用しています私はtime.strftimeをお勧めするようなもっと複雑なことをする必要がありましたが、それはかなりです。は文字列のバッシングよりも高価です。

6

を、私はそれを解析するdatetimeモジュールを使用します。

>>> from datetime import datetime 
>>> date = datetime.strptime('2/28/1987', '%m/%d/%Y') 
>>> date.strftime('%Y-%m-%d') 
'1987-02-28' 
+0

'.isoformat()'の日付では、同じ書式設定文字列OOTBが使用されます。 :-) –

関連する問題