【问题标题】:Returning dates in different format in python在python中以不同格式返回日期
【发布时间】:2020-11-30 16:57:20
【问题描述】:

我制作了一个格式为:日/月/年的函数。我想做另一个功能,例如询问用户:“你想什么时候来?”并取决于用户说我想打印答案的月份。

问题:我不知道如何制作要求用户输入格式的功能:日/月/年不限制年份,我希望用户输入任何年份并且仍然能够获得与任何年份(但不同月份)的答案相同。

enter code here
import datetime 

def dateformat(date):
    return datetime.datetime.strptime(datumet, "%d/%m/%Y")

def ask_user():
    winter = dateformat('1/1/2020') <= dateformat('31/3/2020')
    spring = dateformat('1/4/2020') <= dateformat('31/5/2021')
    summer = dateformat('1/6/2020') <= dateformat('31/9/2021')
    autumn = dateformat('1/10/2020') <= dateformat('31/12/2021')
    
    a = dateformat(input("When do you want to come"))
    if a == winter:
        print("Hi")
    if a == spring:
        print("bye")
    if a == summer:
        print("ok")
    if a == autumn:
        print("no")

我的问题:我怎样才能使这段代码在任何一年都有效?我希望能够在月份内输入任何年份并获得相同的输出。如果我只在 dateformat 函数中返回 %d/%m,用户将无法输入:日/月/年。有没有更好的方法来返回格式?

【问题讨论】:

  • 从输入中您可以提取日期和月份。这将允许用户输入任何年份。那么,这个If I only return %d/%m in the dateformat-function the user will not be able to type: day/month/year 就不成问题了。季节不取决于年份。
  • @MacOS 你是什么意思?不关心哪一年,怎样才能让所有的飞蛾都过冬?
  • 我不认为你的代码做你期望它做的事情。一方面,31/9/2021 不是实际日期,因此dateformat 会抛出错误。其次,winterspring 等是布尔值。您实际上是将日期与布尔值进行比较,因此它们永远不会相等,您也不会得到任何输出。
  • @PranavHosangadi 你有例子吗?我明白你的意思了。
  • @PranavHosangadi 我怎样才能让冬天例如:01/12

标签: python python-3.x datetime if-statement format


【解决方案1】:

我认为您的代码没有按照您的预期进行。一方面,31/9/2021 不是实际日期,因此dateformat 会抛出错误。其次,dateformat('1/1/2020') &lt;= dateformat('31/3/2020') 检查第一个日期是否小于或等于第二个日期,因此winterspring 等都是布尔值(以及所有True)。使用a == winter,您将日期与布尔值进行比较,因此它们永远不会相等,您也不会得到任何输出。

实际上想要做的是读取日期,看看它的month 属性是否在某些限制之间,因为a.year 的值不会影响季节。所以:

datumet = input("When do you want to come? ")
a = datetime.datetime.strptime(datumet, "%d/%m/%Y")
if a.month <= 3:
    print("Hi, you're coming in winter")
elif a.month <= 5:
    print("Spring")
elif a.month <= 9:
    print("Summer")
else:
    print("Autumn")

当您的范围没有在年底结束时,这同样适用。例如,如果冬季从 11 月初持续到 2 月底,

if a.month >= 11 or a.month <= 2:
    print("Hi, you're coming in winter")
elif a.month <= 5:
    print("Spring")
elif a.month <= 9:
    print("Summer")
else:
    print("Autumn")

【讨论】:

  • @Carl-ErikPettersson i.stack.imgur.com/wwPXM.png 你能详细说明一下吗?它对我来说非常好。
  • 对不起!我打错了!但我注意到一件事,代码不适用于 for 循环,我创建了一个带有数字的列表,并希望在调用特定月份时将其全部打印出来,但它不起作用。它只给了我列表中的第一个元素
  • 我可以通过编辑我的原始问题向您展示我的意思,请检查:)
  • 这样做。我不确定你的意思,所以看看你的代码会有帮助。
  • 没关系我又写错了!再次感谢先生!! :)))
猜你喜欢
  • 2019-12-13
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多