使用循环天添加到Python中的日期,范围和切片

问题描述:

我在python初学者,我最近才知道怎么做的基本知识:使用循环天添加到Python中的日期,范围和切片

功能,循环,范围为/如果语句和字符串切片。

到目前为止,我有:

date = raw_input("Enter the date checked out in YYYY-MM-DD format: ") 
dueDate = raw_input("Book is due:") 

length = len(date) 
counter=0 

for i in range(length): 

    if date[i] == "-": 
      counter = counter + 1 
if 1 < counter < 2: 

     print date 
if counter > 2: 

     print date,"too many hyphens" 

if counter <= 1: 

     print date,"not enough hyphens" 

然后,我有:

year = date[0:4] 

month = date[4:6] 

day = date[6:10] 

if year == date[0:4]: 

    year=year 

if month == date[4:6]: 

    month = month 

if day == date[6:10]: 

    day=day 

    print year+month+day 

我试图把它分解成YYYY-MM-DD,然后从计算由于日起7日内用户输入的日期。

该程序的第二部分没有与第一部分一起工作,我不知道如何将它们结合起来(或者如果那应该存在的话)我必须使用函数吗?

闰年不需要考虑,我不能使用模块,如日期时间和时间,因为我没有学到它们,我想写所有代码使用不同的循环变化和/ elif语句。

如果有人能帮助我指向正确的方向,我会非常感激!

感谢,

d

我会给datetime一试,即使你还没有学会呢。我不认为这很复杂或难以学习。使用它比任何自制酿造方法都容易得多。日期使用datetime.date(),使用datetime.timedelta可以添加(或减去)某些天数。

import datetime 

datestr = raw_input("Enter the date checked out in YYYY-MM-DD format: ") 
year,month,day = datestr.split('-') 
date = datetime.date(year,month,day) 
duedate = date + datetime.timedelta(days=7) 
print 'Due date is : {0}'.format(duedate) 

首先,您的代码很难在网站上阅读 - 清理它可能会有所帮助。

其次,看看日期时间模块。它提供了将文本转换为日期对象的服务,然后返回到文本。

一旦你有一个约会对象,你可以做一吨的东西,如:

Python 2.7 (r27:82508, Jul 3 2010, 21:12:11) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from datetime import datetime, timedelta 
>>> d = datetime.strptime('2011-03-05','%Y-%m-%d') 
>>> d 
datetime.datetime(2011, 3, 5, 0, 0) 
>>> d.strftime('%Y-%m-%d') 
'2011-03-05' 
>>> tomorrow = d+timedelta(days=1) 
>>> tomorrow 
datetime.datetime(2011, 3, 6, 0, 0) 
>>> tomorrow.strftime('%Y-%m-%d') 
'2011-03-06' 

参见:http://docs.python.org/library/datetime.html

+0

眼看你想这是一个给定的日期后一周的日期,上面的代码几乎是完美的,只是改变timedelta( days = 1)to timedelta(days = 7) – tkone 2011-03-05 21:15:12

已经掌握了其他技术,我说你也应该学会关于异常和日期时间模块。这对日期验证很有用。

import datetime 
while True: 
    try: 
     date = datetime.datetime.strptime(raw_input("Enter the date checked out in YYYY-MM-DD format: "), "%Y-%m-%d") 

    except ValueError: 
     print "The date was not inserted in the following format: YYYY-MM-DD" 
    else: 
     break 
~      
+0

loskit,@dappawit,@tkone 感谢大家的帮忙!我非常感谢,我会尝试着通过这个程序开始工作,看看它会发生什么。 – pythonbeginner 2011-03-05 21:31:56

使用可以使用timedelta功能日期时间模块

from datetime import timedelta 
    New_date=DateTime_obj-timedelta(days=No. of days to add)