我有格式
day/month/year
我有一项任务是定义一个带date
的函数,并返回增加1天的日期
例如:
next_day("13/1/2018")
返回14/1/2018
next_day("31/3/2018")
返回1/4/2018
我怎么能这样做,当函数采用date
而非day
,month
,year
时,我不知道如何执行此操作。
答案 0 :(得分:1)
这是使用标准库中的第三方dateutil
库和datetime
的一种方式。
import datetime
from dateutil import parser
def add_day(x):
try:
new = parser.parse(x) + datetime.timedelta(days=1)
except ValueError:
new = parser.parse(x, dayfirst=True) + datetime.timedelta(days=1)
return new.strftime('%d/%m/%Y').lstrip('0').replace('/0', '/')
add_day('13/1/2018') # '14/1/2018'
add_day('31/3/2018') # '1/4/2018'
尝试使用datetime
执行相同的逻辑将更具限制性,这可能不是您想要的,因为您可以保证输入日期的格式并不明显。
<强>解释强>
datetime.timedelta
添加一天。 纯datetime
解决方案
import datetime
def add_day(x):
try:
new = datetime.datetime.strptime(x, '%m/%d/%Y') + datetime.timedelta(days=1)
except ValueError:
new = datetime.datetime.strptime(x, '%d/%m/%Y') + datetime.timedelta(days=1)
return new.strftime('%d/%m/%Y').lstrip('0').replace('/0', '/')
add_day('13/1/2018') # '14/1/2018'
add_day('31/3/2018') # '1/4/2018'
答案 1 :(得分:0)
您可以尝试此功能至少返回当前日期。
延期日期{
var withWeekDayMonthDayAndYear: String {
let formatter = DateFormatter()
formatter.timeZone = TimeZone(abbreviation: "EST")
formatter.dateFormat = "EEEE, MMMM dd, yyyy"
return formatter.string(from: self)
}
然后使用扩展名.. ((日期()。withWeekDayMonthDayAndYear))
这是一个开始..