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