0

for ループを使用して、テーブルの日付/時刻の TrackLog 間の時間差を見つける必要があります。trackLog エントリは次の形式で見つかります。

2013-08-02T14:30:10Z

最初の timediff を計算しようとすると、「for」ループが失敗することを考慮する必要があります。最初のログには、計算を実行する前のエントリがないためです。したがって、最初のログが見つかったときにスクリプトを実行できるように、「if」ステートメント (ブール値を含む) を含める必要があります。

これは私がこれまでに得たものです:

for row in cur:
    period=row.tracklogs
    year=period[0:4]
    month=period[6:7]
    day=period[8:10]
    hour=period[11:13]
    minut=period[14:16]
    second=period[17:19]
    print period
    firstline="yes"
    if firstline=="yes":
        prev_period=row.tracklogs
        prev_coord=row.shape
        firstline="no"
    else:
        new_period=row.tracklogs
        new_coord=row.shape
        period1=datetime.datetime(int(prev_period))
        period2=datetime.datetime(int(new_period))
        timediff=(a2-a1).seconds
        print timediff

日時操作には整数が必要だと思いますが、次の例外が発生します。

 line 36, in <module>
    tid1=datetime.datetime(int(tidl_tid))
ValueError: invalid literal for int() with base 10: '2009-05-19T11:51:47Z'

何か間違ったことをしていることはわかっていますが、それが何であるかはわかりません。どんな助けでも感謝します。

4

1 に答える 1

1

文字列を整数に変換しようとしています2009-05-19T11:51:47Zが、文字列は適切な 10 進数ではありません。したがって、pythonはエラーをスローしています

日付文字列を解析し、必要な日時オブジェクトを取得する必要があります。

仮定

date_string = "2009-05-19T11:51:47Z"

どちらか

from dateutil import parser
d1 = parser.parse(date_string)

また

from datetime import datetime
d1 = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%SZ")

次のコマンドを使用して、2 つの日付 d1 と d2 の差を秒単位で取得します。

(d1-d2).total_seconds()
于 2013-09-28T11:15:46.407 に答える