0

Excel シートから抽出された既存の日付時刻を変更する (秒数を増やす) ことはできません。

Code:
import xlrd
import xlwt
from datetime import datetime, timedelta
wb = xlrd.open_workbook('sample.xls')
wb2 = xlrd.open_workbook('sample2.xls')
# Load XLRD Excel Reader

sheetname = wb.sheet_names() #Read for XCL Sheet names
sh1 = wb.sheet_by_index(0) #Login
sheetname2 = wb2.sheet_names() #Read for XCL Sheet names
sh2 = wb2.sheet_by_index(0) #Login

def readRows():
    #a = datetime.time(10, 23)
    #print a
    for rownum in range(sh1.nrows):
        rows = sh1.row_values(rownum)
        for rownum2 in range(sh2.nrows):
            rows2 = sh2.row_values(rownum2)
            date = rows[0]
            date2 = rows2[0]
            print xlrd.xldate_as_tuple(date,0)
            print xlrd.xldate_as_tuple(date2,0)
            #date2 = rows2[0]
            if date == date2 :
                #print 'found'
                time = rows[2]
                time2 = rows2[2]
                if time == time2 :
                    print 'time matched'
                    #remaining code
                elif(time<time2)&&(time+datetime.timedelta(0,15)>time2)):
                    print 'less'
                    ti=xlrd.xldate_as_tuple(time,0)
                    ti2=xlrd.xldate_as_tuple(time2,0)
                    print ti,ti2 # shows (2013,11,11,10,42,36) 
                    print a.time #not working
                    ti+=datetime.timedelta(seconds=3) #not working
                    ti2+=2 #not working
                    print ti,ti2
                    print time
                    time=datetime.datetime (xlrd.xldate_as_tuple(time,0)) + datetime.timedelta(0,1) #not working
                    time2 = xlrd.xldate_as_tuple(datetime.datetime(time2),0)+ datetime.timedelta(0,1) #not working
                    print (xlrd.xldate_as_tuple(time+timedelta(seconds=3),0)),(xlrd.xldate_as_tuple(time2+timedelta(seconds=3),0)) #not working
                elif (time > time2) & (time+datetime.timedelta(0,15) > time2)) :
                    print 'more'
                    print time,time2
print readRows()
input('enter to exit:')

2 つのログ ファイルがあります。1 つは 15 秒ごとのログ、もう 1 つは可変時間のログです。したがって、2 番目のログの最も近い値を最初のログの時間にマップする必要があるため、Excel シートから抽出された時間を変更することはできませんが、時間は適切に表示され、適切に比較されます。

4

1 に答える 1

0

xldate_as_tuple によって返されるタプルの順序を変更するか、月を 0 ベースではなく 1 ベースに変更する必要があるかもしれませんが、基本的には、日付を部分に分けたら、それから datetime オブジェクトを作成し、タイムデルタ ...

>>> year,month,day,hour,second = 2002,10,15,22,23  #oct 15 2002 @ 10.23pm
>>> d1 = datetime.datetime(year,month,day,hour,second)
>>> num_seconds = 3600 #one hour
>>> time_delt = datetime.timedelta(seconds=num_seconds)
>>> print d1+time_delt
2002-10-15 23:23:00
>>> #notice it is an hour later!

Pythonのドキュメントは非常に役立ちます

http://docs.python.org/2/library/datetime.html#datetime.timedelta

http://docs.python.org/2/library/datetime.html#module-datetime

于 2013-03-25T23:26:50.620 に答える