[英]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.