Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > subtract dates with time module

Reply
Thread Tools

subtract dates with time module

 
 
barronmo
Guest
Posts: n/a
 
      03-26-2008
I'm trying to get the difference in dates using the time module rather
than datetime because I need to use strptime() to convert a date and
then find out how many weeks and days until that date. I'm a beginner
so any help would be appreciated. Here is the code:

def OBweeks(ptID):
qry = 'SELECT short_des FROM problems WHERE patient_ID = %s;' %
(ptID)
results = EMR_utilities.getAllData(qry)
for items in results:
r = re.search('\d\d\d\d-\d\d-\d\d', items)
if r:
d = time.strptime(r.group(), "%Y-%m-%d') -
time.localtime()
weeks, days = divmod(d.days, 7)
return '%s %s/7 weeks' % (weeks, days)

This isn't working. I'm getting "unsupported operand type for -:
'time.struct_time' and 'time.struct_time" error.

Thanks, Mike
 
Reply With Quote
 
 
 
 
Diez B. Roggisch
Guest
Posts: n/a
 
      03-27-2008
barronmo wrote:

> I'm trying to get the difference in dates using the time module rather
> than datetime because I need to use strptime() to convert a date and
> then find out how many weeks and days until that date. I'm a beginner
> so any help would be appreciated. Here is the code:


Use strptime to create time-tuples, and use the fields in there to create
datetime-objects. Then do the math with them.

Diez
 
Reply With Quote
 
 
 
 
John Machin
Guest
Posts: n/a
 
      03-27-2008
barronmo wrote:
> I'm trying to get the difference in dates using the time module rather
> than datetime because I need to use strptime() to convert a date and
> then find out how many weeks and days until that date.


datetime.datetime.strptime was introduced in Python 2.5; what version
are you using?

If you really want to get to datetime, here's a quick bridge:
>>> import time, datetime
>>> def mystrptime(astr, format):

.... return datetime.datetime(*time.strptime(astr, format)[:6])
....
>>> mystrptime('2008-03-31', '%Y-%m-%d')

datetime.datetime(2008, 3, 31, 0, 0)


> I'm a beginner
> so any help would be appreciated. Here is the code:
>
> def OBweeks(ptID):
> qry = 'SELECT short_des FROM problems WHERE patient_ID = %s;' %
> (ptID)
> results = EMR_utilities.getAllData(qry)
> for items in results:
> r = re.search('\d\d\d\d-\d\d-\d\d', items)
> if r:
> d = time.strptime(r.group(), "%Y-%m-%d') -


You have " at the start and ' at the end of what's supposed to be a
string constant. That's a syntax error; it won't run. Please don't serve
up what you thought you might have run -- use copy/paste.

In this particular case, you can just use time.mktime to convert a time
tuple into days since the epoch.

# untested
days = time.mktime(time.strptime(r.group(), "%Y-%m-%d")) -
int(time.mktime(time.localtime()))
weeks, days = divmod(days, 7)

> time.localtime()
> weeks, days = divmod(d.days, 7)
> return '%s %s/7 weeks' % (weeks, days)
>
> This isn't working. I'm getting "unsupported operand type for -:
> 'time.struct_time' and 'time.struct_time" error.


It *is* working. That is the correct result of the code that you
executed. There is is nothing in the time docs to suggest that
attempting to subtract time tuples produces anything useful.

HTH,
John
 
Reply With Quote
 
barronmo
Guest
Posts: n/a
 
      04-02-2008
Thanks for the help everyone. I ended up with the following:

def OBweeks(ptID):
qry = 'SELECT short_des FROM problems WHERE patient_ID = %s;' %
(ptID)
results = EMR_utilities.getAllData(qry)
for items in results:
r = re.search('\d\d\d\d-\d\d-\d\d', str(items))
if r:
edc = datetime.date(*map(int, r.group().split('-')))
pregnancy = datetime.timedelta(weeks=-40)
conception = edc + pregnancy
howfar = datetime.date.today() - conception
weeks, days = divmod(howfar.days, 7)
return '%s %s/7 weeks' % (weeks, days)
else: pass

Mike
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to subtract dates ? Lutek Java 6 04-03-2009 11:03 AM
Need to use dates earlier than 1900 (Time library says out of range for dates < 1900) me@benjaminarai.com Ruby 1 07-17-2007 02:25 PM
Dates dates dates dates... SQL and ASP.NET David Lozzi ASP .Net 1 09-30-2005 02:18 PM
Dates! Dates! Dates! PW ASP General 4 08-09-2004 04:42 PM
newbie question on how to subtract two dates. Ruby Ruby Ruby 4 12-27-2003 06:45 AM



Advertisments