13

datetime.monthdatetime.day、およびを含む日時オブジェクトを使用しようとしていますdatetime.hour

問題は、これらのオブジェクト (たとえばdatetime.month) が 1、2、3 などの値を 12 に与えることです。代わりに、01、02、03 などの形式でこれらを 12 にする必要があります。日と同様の問題があります。月。

この形式に切り替えるにはどうすればよいですか?


これはあまり明確な質問ではないことに気付きました。

文字列フォーマットを使用して、タイムスタンプ付きの辞書から値を出力しています。

したがって、式はおおよそ次のとおりです。

print "%s-%s-%s"%(date.year, date.month, date.day, etc., len(str) )

私の値はもともと正しい"%Y-%m-%d形式 (2000-01-01 など) でした。上記を使用すると、2000-1-1 が得られます。

4

3 に答える 3

30

文字列の書式設定を使用して、個々の属性を出力できます。

print ('%02d' % (mydate.month))

または、より最近の文字列フォーマット (python 2.6 で導入):

print ('{0:02d}'.format(a.month))  # python 2.7+ -- '{:02d}' will work

次の点にも注意してください。

print ('{0:%m}'.format(a))  # python 2.7+ -- '{:%m}' will work.

動作します。

または、代わりに datetime オブジェクトのstrftimeメソッドを使用します。

print (mydate.strftime('%m'))

そして、完全を期すために:

print (mydate.strftime('%Y-%m-%d')) 

編集中のコードを適切に置き換えます。

于 2012-07-24T18:51:10.107 に答える
1

それらを文字列に変換し、単にそれらを埋めることができます:

import datetime

d = datetime.datetime(2012, 5, 25)

m = str(d.month).rjust(2, '0')
print(m) # Outputs "05"

またはあなたはただstr.format

import datetime

d = datetime.datetime(2012, 5, 25)

print("{:0>2}".format(d.month))

編集:更新された質問に答えるために、これを試しましたか?

import datetime
d = datetime.datetime(2012, 5, 25)
print("{:0>4}-{:0>2}-{:0>2}".format(d.year, d.month, d.day))

もともと文字列フォーマットを使って印刷しているとおっしゃっていましたが、何を変更しましたか?このコード:

print "%s-%s-%s"%(date.year, date.month, date.day, etc., len(str) )

あなたがどの引数を渡しているかについて私は少し不明確なので、実際には意味がありません。私は、、、および、だけdate.yearを想定していますが、それは不明確です。どのようなアクションを実行していますか?date.monthdate.daylen(str)

于 2012-07-24T18:54:12.220 に答える
1

zfillは覚えやすいです:

In [19]: str(dt.month).zfill(2)
Out[19]: '07'
于 2020-08-16T15:23:23.070 に答える