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



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

#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专业人士,因为我几个月前掌握了这门语言,但我想在这里了解一些事情:

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

我在以下技术设置中尝试了我的代码: 使用 Python 3.5.2 (x64(、Python 3.6.1 (x64( 和 repl.it Python 3.6.1 的本地机器和使用 Python 3.6.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的问题,它的工作原理是在最右边的分隔符上拆分(在您的情况下,月份和日期之间的连字符( - 这就是rpartitionr的意思。所以get_date.rpartition('-')返回['2017-07', '-', '14'].

如果你想坚持你的方法,如果你用partition替换rpartition,你的year代码就可以工作,例如:

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

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

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

最新更新