在 Python 中修剪日期的有效方法是啥?

Posted

技术标签:

【中文标题】在 Python 中修剪日期的有效方法是啥?【英文标题】:What is an efficient way to trim a date in Python?在 Python 中修剪日期的有效方法是什么? 【发布时间】:2017-12-25 11:46:36 【问题描述】:

目前我正在尝试使用以下代码将当前日期修剪为日、月和年。

#Code from my local machine
from datetime import datetime
from datetime import timedelta

five_days_ago = datetime.now()-timedelta(days=5)
# result: 2017-07-14 19:52:15.847476

get_date = str(five_days_ago).rpartition(' ')[0]
#result: 2017-07-14

#Extract the day
day = get_date.rpartition('-')[2]
# result: 14

#Extract the year
year = get_date.rpartition('-')[0])
# result: 2017-07 

我不是 Python 专业人士,因为几个月前我就掌握了这门语言,但我想在这里了解一些事情:

    如果 str.rpartition() 应该在您声明某种排序分隔符(-、/、“”)后分隔字符串,为什么我会收到此 2017-07?我期待收到 2017 年... 有没有一种有效的方法来分隔日、月和年?我不想对我的不安全代码重复同样的错误。

我在以下技术中尝试了我的代码。设置: 使用 Python 3.5.2 (x64)、Python 3.6.1 (x64) 的本地机器和使用 Python 3.6.1 的 repl.it

Try the code online, copy and paste the line codes

【问题讨论】:

How to get current time in python and break up into year, month, day, hour, minute?的可能重复 可能,但这并不能解释问题 1。 读取 rpartition python-reference.readthedocs.io/en/latest/docs/str/… & partition python-reference.readthedocs.io/en/latest/docs/str/… 你想要一年的分区。不分区 【参考方案1】:

尝试以下方法:

from datetime import date, timedelta

five_days_ago = date.today() - timedelta(days=5)
day = five_days_ago.day
year = five_days_ago.year

如果您想要的是日期(不是日期和时间),请使用 date 而不是 datetime。然后,日期和年份只是 date 对象的属性。

关于您关于rpartition 的问题,它通过拆分最右边 分隔符(在您的情况下是月份和日期之间的连字符)来工作-这就是@ 中的r 987654327@ 表示。所以get_date.rpartition('-') 返回['2017-07', '-', '14']

如果您想坚持您的方法,如果您将rpartition 替换为partition,您的year 代码将可以工作,例如:

year = get_date.partition('-')[0]
# result: 2017

但是,还有一种相关(更好)的方法 - 使用 split

parts = get_date.split('-')
year = parts[0]
month = parts[1]
day = parts[2]

【讨论】:

当然,我今天学到了一些非常有价值的东西,因为我认为 .rpartition 是拆分字符串的主要工具,但我大错特错了。

以上是关于在 Python 中修剪日期的有效方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

C# 中从字符串中修剪换行符的最简单方法是啥?

在 Python 中查找数字的所有因数的最有效方法是啥?

在 Python 中打印字符串的最有效方法是啥?

在 Python 中增加日期字符串 YYYY-MM-DD 的最快方法是啥?

创建函数以使当前日期以没有时间戳的字符串格式显示的最有效方法是啥? [复制]

读取 .csv 文件时在 Python 中解析日期的最快方法是啥?