使用datetime.strptime在python中转换日期格式有问题

时间:2017-08-04 06:32:32

标签: python

大家好我有这样的代码来计算六个月前的确切日期但不幸的是它打印了yy-mm-dd格式我想要dd / mm / yy格式我该怎么做(我试着转换但它不起作用)?我的代码出了什么问题?

  import datetime
  six_months = str(datetime.date.today() - datetime.timedelta(6*365/12-1)
  datetime.datetime.strptime(six_months, '%Y-%m-%d').strftime('%d/%m/%y')

预期产量= 04/02/2017 当前输出= 2017-02-04

2 个答案:

答案 0 :(得分:1)

代码很好,你只是忘了保存到

的结果
datetime.datetime.strptime(six_months, '%Y-%m-%d').strftime('%d/%m/%y')

到任何变量。 strptime不会以任何方式更改调用它的对象,它会返回一个字符串。

答案 1 :(得分:1)

我认为你计算 6个月前的算法并不符合现实世界对该词组的理解。从8月4日开始的6个月是2月4日,你的计算给出了正确答案。但从9月4日开始的6个月是3月4日,你的计算结果给出了3月7日的答案。

您的代码也会不必要地将计算日期格式化为字符串,然后必须将字符串解析回日期以获得所需的dd / mm / yy格式。

let btn1 = UIButton(type: .custom)
btn1.setImage(UIImage(named: "image"), for: .normal)
btn1.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
btn1.addTarget(self, action: #selector(methodname), for: .touchUpInside)
let item1 = UIBarButtonItem(customView: btn1)

let btn2 = UIButton(type: .custom)
btn2.setImage(UIImage(named: "image"), for: .normal)
btn2.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
btn2.addTarget(self, action: #selector(methodName), for: .touchUpInside)
let item2 = UIBarButtonItem(customView: btn2)  

self.navigationItem.setLeftBarButtonItems([item1,item2], animated: true)

输出(直到明天)

import datetime
from dateutil.relativedelta import *
six_months = datetime.date.today() + relativedelta(months=-6)
print (f"{six_months:%d/%m/%y}")