将int转换为日期

时间:2019-06-07 01:54:44

标签: python date datetime

我正在尝试从整数输入中将yyyy / mm / dd转换为dd / mm / yyyy。

当我将仿体内部的模式从datetime.date(year, month, day)更改为datetime.date(day, month, year)时,它会返回 Value错误

def acc_expiration():
    year = int(input('YEAR: '))
    month = int(input('MONTH: '))
    day = int(input('DAY: '))
    exp_date = datetime.date(day, month, year)
    return exp_date

ValueError: day is out of range for month

2 个答案:

答案 0 :(得分:1)

来自documentation

  

datetime.date(年,月,日)类

这意味着您需要将参数放在正确的位置,与以后打印方式无关。

这应该有效:

def acc_expiration():
    year = int(input('YEAR: '))
    month = int(input('MONTH: '))
    day = int(input('DAY: '))
    exp_date = datetime.date(year, month, day)
    return exp_date

现在让我们以dd / mm / yyyy格式打印它:

d = acc_expiration()
f = d.strftime('%d/%m/%Y')
print(f) # prints it formatted dd/mm/yyyy

您的值错误是因为您给day参数指定了年份整数(大于31的整数),而对于年份,您给出了日期整数。

答案 1 :(得分:0)

您正在使对象与演示文稿混淆。

查看Python文档中的Datetime(here

  1. datetime.date的正确顺序是class datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])

  2. 一旦有了日期时间对象,就可以用多种方式格式化它的输出,以满足您的需求。

有帮助吗?