簡體   English   中英

在 DD/MM/YYYY 和 YYYY-MM-DD 之間轉換日期?

[英]Converting date between DD/MM/YYYY and YYYY-MM-DD?

使用 Python 腳本,我需要讀取日期格式為 DD/MM/YYYY 的 CVS 文件,並將其轉換為 YYYY-MM-DD,然后再將其保存到 SQLite 數據庫中。

這幾乎可以工作,但因為我沒有提供時間而失敗:

from datetime import datetime

lastconnection = datetime.strptime("21/12/2008", "%Y-%m-%d")

#ValueError: time data did not match format:  data=21/12/2008  fmt=%Y-%m-%d
print lastconnection

我假設 datetime 對象中有一個方法可以很容易地執行此轉換,但我找不到如何執行此操作的示例。 謝謝你。

您的示例代碼是錯誤的。 這有效:

import datetime

datetime.datetime.strptime("21/12/2008", "%d/%m/%Y").strftime("%Y-%m-%d")

對 strptime() 的調用根據第二個中指定的格式解析第一個參數,因此這兩個需要匹配。 然后您可以調用 strftime() 將結果格式化為所需的最終格式。

您首先需要將字符串轉換為日期時間元組,然后將該日期時間元組轉換為字符串,如下所示:

lastconnection = datetime.strptime("21/12/2008", "%d/%m/%Y").strftime('%Y-%m-%d')

我是編程新手。 我想從yyyy-mm-dd轉換為dd/mm/yyyy以打印出我所在地區人們使用和認可的格式的日期。

上面接受的答案讓我走上了正確的軌道。

我最終對我的問題的答案是:

import datetime

today_date = datetime.date.today()
print(today_date)

new_today_date = today_date.strftime("%d/%m/%Y")
print (new_today_date)

導入語句后的前兩行以美國格式 (2017-01-26) 給出今天的日期。 最后兩行將其轉換為英國和其他國家/地區認可的格式 (26/01/2017)。

您可以縮短此代碼,但我保留它是因為它對我作為初學者很有幫助。 我希望這對其他初學者程序員有所幫助!

有沒有其他人認為將這些字符串轉換為日期/時間對象是一種浪費,最終是一個簡單的文本轉換? 如果您確定傳入的日期是有效的,您可以使用:

>>> ddmmyyyy = "21/12/2008"
>>> yyyymmdd = ddmmyyyy[6:] + "-" + ddmmyyyy[3:5] + "-" + ddmmyyyy[:2]
>>> yyyymmdd
'2008-12-21'

這幾乎肯定會比日期轉換更快。

如果您需要轉換整個列(來自pandas DataFrame ),首先使用.dt.strftime將其( pandas Series )轉換為datetime時間格式,然后使用to_datetime

def conv_dates_series(df, col, old_date_format, new_date_format):

    df[col] = pd.to_datetime(df[col], format=old_date_format).dt.strftime(new_date_format)
    
    return df

示例用法:
import pandas as pd

test_df = pd.DataFrame({"Dates": ["1900-01-01", "1999-12-31"]})

old_date_format='%Y-%m-%d'
new_date_format='%d/%m/%Y'

conv_dates_series(test_df, "Dates", old_date_format, new_date_format)

    Dates
0   01/01/1900
1   31/12/1999

#case_date= 03/31/2020   

#Above is the value stored in case_date in format(mm/dd/yyyy )

demo=case_date.split("/")
new_case_date = demo[1]+"-"+demo[0]+"-"+demo[2]
#new format of date is (dd/mm/yyyy) test by printing it 
print(new_case_date)

最簡單的方法

在讀取 csv 文件時,輸入參數parse_dates

df = pd.read_csv("sample.csv", parse_dates=['column_name'])

這會將提到的列的日期轉換為 YYYY-MM-DD 格式

根據您的問題將日期格式 DD/MM/YYYY 轉換為 YYYY-MM-DD,您可以使用這個:

from datetime import datetime
lastconnection = datetime.strptime("21/12/2008", "%d/%m/%Y").strftime("%Y-%m-%d")
print(lastconnection)
  • df是您的數據框
  • Dateclm是您要更改的列

此列應為DateTime數據類型。

df['Dateclm'] = pd.to_datetime(df['Dateclm'])

df.dtypes


#Here is the solution to change the format of the column

df["Dateclm"] = pd.to_datetime(df["Dateclm"]).dt.strftime('%Y-%m-%d')

print(df)

暫無
暫無

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

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