0

したがって、私は を使用したくないと言って前置きしたいと思いますdatetime.strptime()。非常に単純なパーサーを作成しました。コードは次のとおりです。

def datetime_parse(s):
    return datetime.datetime(int(s[0:4]), int(s[5:7]), int(s[8:10]), int(s[11:13]),
                             int(s[14:16]), int(s[17:19]), int(s[20:26]))

ここでの問題は、マイクロ秒の変換では、次のような値があることです。

2012-09-30 17:00:04.01350000

それを読み込むと、int()自動的に 0 に切り捨てられ、私の知る限り、sdatetime.datetime()のみが受け入れられintます。これに対する回避策はありますか?

注:その間に修正された元の質問では、の最後のパラメーターはdatetime.datetime()でしたint(s[20:27])

4

2 に答える 2

1

期待どおりに動作しています-文字列に解析すると、同じ文字列が入ります.

>>> s = '2012-09-30 17:00:04.013500'
>>> d = datetime.datetime(int(s[0:4]), int(s[5:7]), int(s[8:10]), int(s[11:13]),   int(s[14:16]), int(s[17:19]), int(s[20:26]))
>>> d.strftime('%Y-%m-%d %H:%M:%S.%f')
'2012-09-30 17:00:04.013500'
于 2012-11-15T23:59:00.450 に答える
1

マイクロ秒は [0, 1E6) の範囲にある必要があります。6 桁ではなく 7 桁を渡しているため、余分なゼロが実際の値を 10 倍に増やしていますint(s[20:26])。代わりに試してください。

于 2012-11-15T23:47:17.930 に答える