在 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 中修剪日期的有效方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中增加日期字符串 YYYY-MM-DD 的最快方法是啥?