簡體   English   中英

將12小時格式轉換為24小時Python

[英]Convert 12 hour format to 24 hour Python

輸入數據來自CSV文件,其中日期以AM / PM格式設置,然后使用Pandas庫將csv導出到sqlite數據庫表。

對於python 2.7或3,是否有任何精美的解決方案或內置函數將這些12小時日期轉換為24小時格式(最好在將它們寫入數據庫之前)? 我需要它來比較將導入數據庫的日期。

使用以下代碼:

import pandas as pd
import datetime as dt

from sqlite3 import connect
from glob import iglob
from os.path import splitext, basename


dbName = 'logs'
logsDir = 'event_logs'

def csvToDb(db, filename):
    conn = connect(db)
    df = pd.read_csv(filename,encoding='utf-8')
    df.to_sql(splitext(basename(filename))[0], conn)
    conn.close()


def csvLogsToDb(directory):
    for filename in iglob(directory + '/*.csv'):
        print('WRITING TO DB | ' + filename)
        csvToDb(dbName, filename)

    print("DONE")


if __name__ == "__main__":
    csvLogsToDb(logsDir)

我刪除了大多數數據並保留了最相關的內容,但總而言之,這是我當前的輸入和所需的輸出

輸入CSV數據:

Level,DateTime    
Information,2017/01/06 9:06:02 AM
Information,2017/01/06 9:02:44 AM
Information,2017/01/06 8:56:48 PM

電流輸出

COL1    
    Information    
    Information
    Information

COL2
    2017/01/06 9:06:02 AM
    2017/01/06 9:02:44 AM
    2017/01/06 8:56:48 PM

預期的輸出

COL1
    Information
    Information
    Information

COL2
    2017-01-06 09:06:02
    2017-01-06 09:02:44
    2017-01-06 20:56:48

只需告訴pandas.read_csv()解析日期,請參閱可用datetime解析選項

dateutil.parser默認解析器可以dateutil.parser用AM / PM處理時間。 parse_dates選項設置為要解析的列索引列表。 對於示例輸入,將在第1列:

>>> import pandas
>>> from io import BytesIO
>>> data = BytesIO(b'''\
... Level,DateTime
... Information,2017/01/06 9:06:02 AM
... Information,2017/01/06 9:02:44 AM
... Information,2017/01/06 8:56:48 PM
... ''')
>>> pandas.read_csv(data, parse_dates=[1])
         Level        DateTime
0  Information 2017-01-06 09:06:02
1  Information 2017-01-06 09:02:44
2  Information 2017-01-06 20:56:48

您可以使用datetime包來完成此操作

from datetime import datetime
data = '2:35 PM'
standard_time_format = datetime.strptime(data, "%I:%M %p")
only_in_24_hour_format = datetime.strftime(standard_time_format, "%H:%M")
print only_in_24_hour_format
print standard_time_format

這將給出以下輸出

14:35

1900-01-01 14:35:00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM