Python timedelta error: skipping a day when trying to get tomorrow
Python timedelta error: skipping a day when trying to get tomorrow
我有以下代码:
import time
from datetime import date, datetime, timedelta
def getNextDay(last_day):
#Returns tomorrows timestamp at two times: 00:00 and 23:59
last_day = datetime.utcfromtimestamp(last_day)
tomorrow = last_day + timedelta(days=1)
tomorrow_start = datetime(tomorrow.year, tomorrow.month, tomorrow.day, 0, 0, 0, 0)
tomorrow_end = datetime(tomorrow.year, tomorrow.month, tomorrow.day, 23, 59, 0, 0)
return [time.ctime(int(tomorrow_start.strftime("%s"))), time.ctime(int(tomorrow_end.strftime("%s")))]
last_day = 1370054073 #unix-timestamp
print "The day is:"
print time.ctime(last_day)
print "The next day is:"
print getNextDay(last_day)
当我 运行 它的输出是:
The day is:
Fri May 31 23:34:33 2013
The next day is:
['Sun Jun 2 00:00:00 2013', 'Sun Jun 2 23:59:00 2013']
我找不到问题,因为 getNextDay()
函数似乎是正确的:我想在 00:00 和 23:59 从 1370054073
获取明天。但是它跳过了一天,第二天的输出应该是 ['Sat Jun 1 00:00:00 2013', 'Sat Jun 1 23:59:00 2013']
谁能告诉我哪里做错了?
来自time.ctime
的文档:
Convert a time expressed in seconds since the epoch to a string representing local time. If secs
is not provided or None
, the current time as returned by time()
is used. ctime(secs)
is equivalent to asctime(localtime(secs))
. Locale information is not used by ctime()
.
因此,当您使用 print time.ctime(last_day)
时,您会看到基于当地时间的时间:
Fri May 31 23:34:33 2013
但是,当我使用它时,我看到了不同的时间:
Sat Jun 1 08:04:33 2013
您可以获得实际的UTC时间如下:
>>> datetime.utcfromtimestamp(last_day)
datetime.datetime(2013, 6, 1, 2, 34, 33)
而且,如您所见,它已经是 June 1
,因此您的函数工作正常,不会跳过任何一天。
我有以下代码:
import time
from datetime import date, datetime, timedelta
def getNextDay(last_day):
#Returns tomorrows timestamp at two times: 00:00 and 23:59
last_day = datetime.utcfromtimestamp(last_day)
tomorrow = last_day + timedelta(days=1)
tomorrow_start = datetime(tomorrow.year, tomorrow.month, tomorrow.day, 0, 0, 0, 0)
tomorrow_end = datetime(tomorrow.year, tomorrow.month, tomorrow.day, 23, 59, 0, 0)
return [time.ctime(int(tomorrow_start.strftime("%s"))), time.ctime(int(tomorrow_end.strftime("%s")))]
last_day = 1370054073 #unix-timestamp
print "The day is:"
print time.ctime(last_day)
print "The next day is:"
print getNextDay(last_day)
当我 运行 它的输出是:
The day is:
Fri May 31 23:34:33 2013
The next day is:
['Sun Jun 2 00:00:00 2013', 'Sun Jun 2 23:59:00 2013']
我找不到问题,因为 getNextDay()
函数似乎是正确的:我想在 00:00 和 23:59 从 1370054073
获取明天。但是它跳过了一天,第二天的输出应该是 ['Sat Jun 1 00:00:00 2013', 'Sat Jun 1 23:59:00 2013']
谁能告诉我哪里做错了?
来自time.ctime
的文档:
Convert a time expressed in seconds since the epoch to a string representing local time. If
secs
is not provided orNone
, the current time as returned bytime()
is used.ctime(secs)
is equivalent toasctime(localtime(secs))
. Locale information is not used byctime()
.
因此,当您使用 print time.ctime(last_day)
时,您会看到基于当地时间的时间:
Fri May 31 23:34:33 2013
但是,当我使用它时,我看到了不同的时间:
Sat Jun 1 08:04:33 2013
您可以获得实际的UTC时间如下:
>>> datetime.utcfromtimestamp(last_day)
datetime.datetime(2013, 6, 1, 2, 34, 33)
而且,如您所见,它已经是 June 1
,因此您的函数工作正常,不会跳过任何一天。