2012-02-28 16 views
1

日付を変更する必要があると書かれたスクリプトがあります。スクリプトの実行時にこのメッセージが出力されます日付を日/月/年(2012年1月20日)のPythonに変換するには

*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON 20/2/2012 AT 18:3 *** 

私はこれをどのように行うか、

20/Feb/2012に変換された日付を必要とするを与える

output_messaging("*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON " + 
    str(datetime.date.today().day) + "/" + str(datetime.date.today().month) + "/" +    
    str(datetime.date.today().year) + " AT " + str(datetime.datetime.now().hour) + ':' + 
    str(datetime.datetime.now().minute) + ':' + str(datetime.datetime.now().second) + " ***\n\n") 

+1

使用time.strftimeを参照してください。 [この記事を参照してください。] [1] [1]:http://stackoverflow.com/questions/4855406/how-to-convert-a-time-to-a-string –

答えて

2

使用strftime - それはカスタム連結の束を行うよりも方法簡単です。書式設定の表hereがあります。

>>> s = "*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON "\ 
...  "%d/%b/%y AT %H:%M:%S ***\n\n" 
>>> datetime.datetime.now().strftime(s) 
'*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON 28/Feb/12 AT 11:44:03 ***\n\n' 

eumiroの答えが示すように、あなたもそうのようなわずかに変更されたフォーマット文字列で上記の呼び出しを反転することができます

>>> s = "*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON "\ 
...  "{0:%d/%b/%y} AT {0:%H:%M:%S} ***\n\n" 
>>> s.format(datetime.datetime.now()) 
'*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON 28/Feb/12 AT 13:41:10 ***\n\n' 

formatは単純に(文書化の下で、衝撃的な)を呼び出すので、これは動作しますdatetime.datetimeオブジェクトの__format__メソッド。たとえば:

>>> datetime.datetime.now().__format__('The current month is %B') 
'The current month is February' 

これはあまりにも他のタイプのために働く:

>>> (16).__format__('x') 
'10' 

__format__の詳細については、日付の書式設定のためのPEP 3101

+0

正しい解決策のように見えるので+1してください。誰かが不適切に投票した疑いがある場合は、司会者の注意を喚起するためにフラグを立てることができます。 –

+0

@ MarkRansom、それは価値があるため、私はまた、どのようにeumiroのアプローチが働いたのか疑問に思った。上記は私がいくつかの酔っ払いで考え出したものです。しかし、私は、Pythonのこの部分がどれほどドキュメント化されていないかに驚いています。 – senderle

+0

センダーレありがとうございました。 – MapMan

0
import datetime 
print datetime.datetime.now().strftime('%d/%b/%Y') 
# 28/Feb/2012 
2
output_messaging("*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON {0:%d/%b/%Y} AT {0:%H:%M} ***".format(datetime.datetime.now())) 

プリントこのため

*** DATA REFRESH FOR STREETWORKS DATA EXECUTED ON 28/Feb/2012 AT 17:41 *** 

More information about datetime formatting

+1

私は思います文字列 'format'がどのように' strftime'を呼び出すのか知りたいです。 –

1
>>> from datetime import date 
>>> day = date.today() 
>>> day.strftime('%d/%b/%y') 
'28/Feb/12' 
+0

私はdownvote誰ですか? – Fred

関連する問題