使用 python 将日期格式 mm/dd/yyyy hh:mm:ss AM 更改为 yyyy-mm-dd hh:mm:ss 格式

时间:2021-04-15 15:06:14

标签: python

我是 python 新手,并试图将数据从 csv 文件导入到 mysql 表。唯一的问题是除日期时间之外的所有数据都没有导入。我在日期字段中得到所有空值,我不知道我哪里出错了。

for row in reader:
    print row
    try:
        (location_id, vrm, start_datetime,end_datetime,ticket_price,crap) = [x.decode('utf-8-sig') for x in row]
    except:
        print "Error with row: " % row
        #sys.exit(3)

    tmp = start_datetime.split(" ")
    start_date = tmp[0]
    start_time = tmp[1]

    tmp = end_datetime.split(" ")
    end_date = tmp[0]
    end_time = tmp[1]

    vrm = vrm.replace(' ', '')
    vrm = vrm.upper()

    tmp = start_date.split('/')
    tmp = end_date.split('/')

    SessionCost = float(ticket_price)/ 100

    iso_date = "%s-%s-%s" %(tmp[0],tmp[1],tmp[2])
    entryDatetime = "%s " % iso_date
    expiryDatetime = "%s " % iso_date
    sql_local = """INSERT INTO customer_1.pay_and_display
        (plate, machine_id, ticket_datetime, expiry_datetime, ticket_name, ticket_price)
        VALUES ("%s", "%s", "%s", "%s", "%s", "%s") """ % (vrm, location_id, start_datetime, 
        end_datetime, "IPSWL",SessionCost)
    print sql_local
    cursor.execute(sql_local)

2 个答案:

答案 0 :(得分:2)

您可以使用 strptime

import datetime

dt = datetime.datetime.strptime("01/23/2021 04:12:56 AM", '%m/%d/%Y %H:%M:%S %p')

print(dt) #2021-01-23 04:12:56

如果您的日期使用 12 小时制,请将 %H 更改为 %I

另请注意,此示例中的 dt 是日期对象。打印它调用它的 __str__(或者可能是 __repr__)方法。要在您的 SQL 中使用它,您可能必须执行此操作 str(dt)

Here 是有关各种格式字符及其含义的信息的链接。

答案 1 :(得分:0)

如果我正在处理的程序使用日期或时间,我喜欢复制并粘贴这个简单的代码块。 'time' 变量目前是一个 datetime object,'dtRn' 变量可以很容易地显示包含日期时间的单个字符串。 Link to W3Schools Python Datetime Options

import datetime
from time import strftime, strptime

time = datetime.datetime.now()
dtRn = str(strftime("%x") + " " + strftime("%X"))

如果您对运行程序所需的时间(从开始到结束)感兴趣;将此代码块的变体添加到脚本末尾,并从开始时间减去结束时间。