繁体   English   中英

Python:从输入日期和时间中减去 6 小时?

[英]Python: Subtracting 6 hours from an input date and time?

我一直在研究使用datetime ,但我似乎无法找到一种方法来做到这一点。

我想要做的是让用户输入一个datereturn那个日期是负 6 小时。

例如

User input: "May 10 - 10:00 PM) 
Returns : "May 10 - 4:00 PM)

或者

User input: "May 10 - 3:00 AM"
Returns:  "May 9 - 9:00 PM"

谢谢@deceze,我最终得到了:

from datetime import datetime
from datetime import timedelta

inputDate = input("Date and time (DD/MM/YY) HH:MM: ")
date_time_str = inputDate

date_time_obj = datetime.strptime(date_time_str, '%d/%m/%y %H:%M')

finalDate = date_time_obj - timedelta(hours=6)
print(finalDate)

我想我现在正在寻找的只是找到一个 AM/PM 变量,当 6 小时前的日期是前一天时,它可以提供帮助?

一个简单的方法是使用 timedeltas

首先,您首先将用户输入转换为日期时间 object。 像这样:

from datetime import datetime, timedelta

year = int(input('Enter a year\n'))
month = int(input('Enter a month\n'))
day = int(input('Enter a day\n'))
hour = int(input('Enter an hour\n'))
minute = int(input('Enter a minute\n'))
amorpm = input('Enter AM or PM\n')
if amorpm.lower() == 'pm':
    finalhour = hour + 12
finaltime = datetime(year, month, day, finalhour, minute)

现在,在您获得日期时间 object 后,您可以进行减法运算。 您从日期时间 object 中减去一个 timedelta。 使用这种格式: object - timedelta(hours=6, minutes=0) 所以你会这样做:

newtime = finaltime - timedelta(hours=6, minutes=0)
print(newtime)

你最终得到的是一个很好的开始! 使用dateutil库(您可以在命令行中使用pip install python-dateutil 安装)解析用户输入可能是一个好主意,以确保您在继续之前有一个有效的日期时间可以使用。

不确定您的具体要求,但您也可以将strftime()方法与%p指令一起用于 output AM 或 PM 到控制台。 您可以测试以下代码:

import datetime
import dateutil.parser

inputDate = input("Date and time (DD/MM/YY) HH:MM: ")
parsedInputDate = dateutil.parser.parse(inputDate)

print(parsedInputDate)
#output looks like this: 2021-06-02 09:00:00

dto = datetime.datetime.strptime(str(parsedInputDate), '%Y-%m-%d %H:%M:%S')
finalDate = dto - datetime.timedelta(hours=12)

print(finalDate.strftime("%Y-%m-%d %I:%M:%S %p"))
#output looks like this: 2021-06-01 09:00:00 PM (12H format)

print(finalDate.strftime("%Y-%m-%d %H:%M:%S"))
#output looks like this: 2021-06-01 21:00:00 (24H format)

如果已经要求用户以 24 小时格式输入时间,则可能不需要额外的 AM/PM 变量。

希望有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM