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

时间:2017-07-20 01:12:45

标签: python python-3.x

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

#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. 是否有一种有效的方式来分隔日,月和年?我不想用我不安全的代码重复同样的错误。
  3. 我在以下技术中尝试了我的代码。设置: 使用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

1 个答案:

答案 0 :(得分:3)

尝试以下方法:

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中的rpartition表示。因此get_date.rpartition('-')会返回['2017-07', '-', '14']

如果您希望坚持自己的方法,那么如果您将year替换为rpartition,则partition代码将会生效,例如:

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

然而,还有相关(更好)的方法 - 使用split

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