目前,我正在尝试使用以下代码将当前日期修剪为日,月和年。
#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( 和 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
的问题,它的工作原理是在最右边的分隔符上拆分(在您的情况下,月份和日期之间的连字符( - 这就是rpartition
中r
的意思。所以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]