By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,694 Members | 1,882 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,694 IT Pros & Developers. It's quick & easy.

incrementing a time tuple by one day

P: n/a
I'm sure this has been asked before, but I wasn't able to find it.

First off I know u can't change a tuple but if I wanted to increment a time
tuple by one day what is the standard method to do that?

I've tried the obvious things and haven't gotten very far.

I have a time tuple that was created like this:
aDate = '19920228'
x = time.strptime(aDate,"%Y%m%d")
print x
(1992, 2, 28, 0, 0, 0, 4, 59, -1)

y = time.mktime(x) + time.mktime((0,0,1,0,0,0,0,0,0))
print y
1643277600.0
print time.ctime(y)
'Thu Jan 27 05:00:00 2022'

It appears to have decremented by a day and a month instead of increment.

What am I doing wrong?

Thanks


David
-------
Surf a wave to the future with a free tracfone
http://cellphone.duneram.com/index.html

__________________________________________________ _______________
Check out Election 2004 for up-to-date election news, plus voter tools and
more! http://special.msn.com/msn/election2004.armx

Jul 18 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
David Stockwell wrote:
I'm sure this has been asked before, but I wasn't able to find it.

First off I know u can't change a tuple but if I wanted to increment a
time tuple by one day what is the standard method to do that?

I've tried the obvious things and haven't gotten very far.

I have a time tuple that was created like this:
aDate = '19920228'
x = time.strptime(aDate,"%Y%m%d")
print x
(1992, 2, 28, 0, 0, 0, 4, 59, -1)

y = time.mktime(x) + time.mktime((0,0,1,0,0,0,0,0,0))
print y
1643277600.0
print time.ctime(y)
'Thu Jan 27 05:00:00 2022'

It appears to have decremented by a day and a month instead of increment.

What am I doing wrong?


What you're doing wrong is: not using the datetime module...
aDate = '19920228'
x = time.strptime(aDate, '%Y%m%d')
print x (1992, 2, 28, 0, 0, 0, 4, 59, -1) d = datetime.datetime.fromtimestamp(time.mktime(x))
d datetime.datetime(1992, 2, 28, 0, 0) y = d + datetime.timedelta(days=1)
y.ctime()

'Sat Feb 29 00:00:00 1992'
-Peter
Jul 18 '05 #2

P: n/a
On Thu, 23 Sep 2004 16:22:08 +0000, "David Stockwell" <wi*******@hotmail.com> wrote:
I'm sure this has been asked before, but I wasn't able to find it.

First off I know u can't change a tuple but if I wanted to increment a time
tuple by one day what is the standard method to do that?

I've tried the obvious things and haven't gotten very far.

I have a time tuple that was created like this:
aDate = '19920228'
x = time.strptime(aDate,"%Y%m%d")
print x
(1992, 2, 28, 0, 0, 0, 4, 59, -1)

y = time.mktime(x) + time.mktime((0,0,1,0,0,0,0,0,0))
print y
1643277600.0
print time.ctime(y)
'Thu Jan 27 05:00:00 2022' ^^^^
the trouble is that you are adding a time delta in seconds since some epoch
instead of adding 24*60*60 seconds (one day).

Note your supposed 1-day delta value in seconds:
time.mktime((0,0,1,0,0,0,0,0,0)) 944035200.0

Or in days: time.mktime((0,0,1,0,0,0,0,0,0))/(60*60*24) 10926.333333333334

import time
aDate = '19920228'
x = time.strptime(aDate,"%Y%m%d")
print x (1992, 2, 28, 0, 0, 0, 4, 59, -1) y = time.mktime(x) + time.mktime((0,0,1,0,0,0,0,0,0))
z = time.mktime(x) + 24*60*60
print time.ctime(y) Thu Jan 27 08:00:00 2022 print time.ctime(z) Sat Feb 29 00:00:00 1992 print time.ctime(time.mktime(x)) Fri Feb 28 00:00:00 1992

To get a one-day delta, you could calculate it (in general you'd have to
watch out for leap stuff, but this case seems to work)
time.mktime((0,0,1,0,0,0,0,0,0)) - time.mktime((0,0,0,0,0,0,0,0,0)) 86400.0 oneday = time.mktime((0,0,1,0,0,0,0,0,0)) - time.mktime((0,0,0,0,0,0,0,0,0))
time.ctime(time.mktime(x)+oneday) 'Sat Feb 29 00:00:00 1992'

It appears to have decremented by a day and a month instead of increment. You didn't read the entire date ;-)
What am I doing wrong?

Misinterpreting time.mktime((0,0,0,0,0,0,0,0,0)) as being zero-based?
time.mktime((0,0,0,0,0,0,0,0,0))

943948800.0

Regards,
Bengt Richter
Jul 18 '05 #3

P: n/a
In article <Qc********************@powergate.ca>,
Peter Hansen <pe***@engcorp.com> wrote:
David Stockwell wrote:
I'm sure this has been asked before, but I wasn't able to find it.

First off I know u can't change a tuple but if I wanted to increment a
time tuple by one day what is the standard method to do that?

I've tried the obvious things and haven't gotten very far.

I have a time tuple that was created like this:
aDate = '19920228'
x = time.strptime(aDate,"%Y%m%d")
print x
(1992, 2, 28, 0, 0, 0, 4, 59, -1)

y = time.mktime(x) + time.mktime((0,0,1,0,0,0,0,0,0))
print y
1643277600.0
print time.ctime(y)
'Thu Jan 27 05:00:00 2022'

It appears to have decremented by a day and a month instead of increment.

What am I doing wrong?


What you're doing wrong is: not using the datetime module...
>>> aDate = '19920228'
>>> x = time.strptime(aDate, '%Y%m%d')
>>> print x (1992, 2, 28, 0, 0, 0, 4, 59, -1) >>> d = datetime.datetime.fromtimestamp(time.mktime(x))
>>> d datetime.datetime(1992, 2, 28, 0, 0) >>> y = d + datetime.timedelta(days=1)
>>> y.ctime() 'Sat Feb 29 00:00:00 1992'

$ python
Python 2.2 (#1, 11/12/02, 23:31:59)
[GCC Apple cpp-precomp 6.14] on darwin
Type "help", "copyright", "credits" or "license" for more information.
import datetime Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: No module named datetime


Well, who knows, maybe datetime is the answer for him,
but if not, I would just use 24*60*60 instead of trying
to get one day in seconds out of mktime(). (I think if
you look at the date closer, it isn't decremented all!)

Donn Cave, do**@u.washington.edu
Jul 18 '05 #4

P: n/a
Donn Cave wrote:
$ python
Python 2.2 (#1, 11/12/02, 23:31:59)
[GCC Apple cpp-precomp 6.14] on darwin
Type "help", "copyright", "credits" or "license" for more information.
import datetime


Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: No module named datetime


The datetime module is new in Python 2.3.
--
Michael Hoffman
Jul 18 '05 #5

P: n/a
In article <do************************@gnus01.u.washington.ed u>,
Donn Cave <do**@u.washington.edu> wrote:
In article <Qc********************@powergate.ca>,
Peter Hansen <pe***@engcorp.com> wrote:
David Stockwell wrote:

Jul 18 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.