多くの楽器からタイムスタンプを生成するために使用するコードは次のとおりです。データが読み込まれると(ミリ秒単位で)、最初のSQLiteデータベースにログインし、送信時に2番目のデータベースにログインします(ミリ秒単位)。データ収集の数日後、私は60秒(vs 00または59)で終わるログ記録された時間に終わる夜に2回あることがわかります。Python 2.7のdatetimeオブジェクトが60秒の値を返します
私はPythonがうるう秒をサポートしていることを理解していますが、私がデータを記録していた夜は何もなかったことを知っています。また、datetimeは59より大きい秒をサポートしていません。とにかく、私は何が起こっているのか分からず、手で問題を再現できませんでした。私は他の誰かがこの行動を以前に見たことがあると思っていました。
例として、私の最初のログには20160823043460のエントリがあり、送信ログには20160823043500.01があります。
ここに私のタイムスタンプコードです。時ライブラリ、hereため
def makeTimeStamp(time=None, miliseconds=False):
timeStamp = ""
if time is None and miliseconds is False:
timeStamp = datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S")
#time format: YYYY MM DD HH MM SS as one string
elif time is None and miliseconds is True:
timeStamp = datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S.%f")
else:
try:
timeStamp = time.strftime("%Y%m%d%H%M%S")
except AttributeError:
print "error: attempted to make a timestamp from a " + type(time)
return timeStamp
ありがとう、それは読みやすいです。 –
time = Noneで関数を呼び出し、返された文字列を数値ではなく文字列として保存していますか?あなたはそれをsqliteに格納すると言います。列のデータ型は何ですか?また、 'time'引数の名前を変更することも考えてください。標準ライブラリにその名前のモジュールがあり、そのモジュールには 'strftime()'関数もあります。 – Anton
ああ、そうです。だからこそ私の名前は貧しい人々の選択です。なぜ私はそれを選んだのかわかりませんが、どこか別の場所に作成されたdatetimeで渡す場所です。この場合、私はまったくそれを使用していない、時間は常になしです。 –