python中的datetime格式存在问题
我对日期的格式有问题。这是我的代码:python中的datetime格式存在问题,python,datetime,Python,Datetime,我对日期的格式有问题。这是我的代码: myDate=datetime.datetime.now() print myDate #2011-02-02 13:54:26.162000 stime = time.mktime(time.strptime(myDate, '%Y-%m-%d %I:%M%S.%f')) 在我的最后一行,我得到了一个例外: File "c:\Python27\Lib\_strptime.py", line 322, in _strptime found = form
myDate=datetime.datetime.now()
print myDate #2011-02-02 13:54:26.162000
stime = time.mktime(time.strptime(myDate, '%Y-%m-%d %I:%M%S.%f'))
在我的最后一行,我得到了一个例外:
File "c:\Python27\Lib\_strptime.py", line 322, in _strptime
found = format_regex.match(data_string)
这个怎么了
编辑
更清楚地说,这是我在stackoverflow上找到的全部代码:
import random
import time
def strTimeProp(start, end, format, prop):
"""Get a time at a proportion of a range of two formatted times.
start and end should be strings specifying times formated in the
given format (strftime-style), giving an interval [start, end].
prop specifies how a proportion of the interval to be taken after
start. The returned time will be in the specified format.
"""
stime = time.mktime(time.strptime(start, format))
etime = time.mktime(time.strptime(end, format))
ptime = stime + prop * (etime - stime)
return time.strftime(format, time.localtime(ptime))
def randomDate(start, end, prop):
return strTimeProp(start, end, '%Y-%m-%d %H:%M:%S.%f', prop)
b1=datetime.datetime.now()
print b1
startDate=b1-datetime.timedelta(27375)
print startDate
endDate=b1-datetime.timedelta(6571)
print endDate
randomDate=randomDate(str(startDate), str(endDate), random.random())
我正在尝试随机获取成人的出生日期
我正在使用Windows XP。我正在尝试随机获取成人的出生日期
好吧,如果你说一个成年人可以在18岁到75岁之间6571-27375天,那么让我们找一个从今天起很多天前的日期:
from datetime import datetime, timedelta
import random
birthday = datetime.today() - timedelta(days = random.randrange(6571, 27375))
print 'Person was born on %s' % (birthday.strftime('%Y-%m-%d'))
我正在尝试随机获取成人的出生日期
好吧,如果你说一个成年人可以在18岁到75岁之间6571-27375天,那么让我们找一个从今天起很多天前的日期:
from datetime import datetime, timedelta
import random
birthday = datetime.today() - timedelta(days = random.randrange(6571, 27375))
print 'Person was born on %s' % (birthday.strftime('%Y-%m-%d'))
time.strtime的第一个参数必须是字符串,而不是从datetime.datetime.now返回的datetime对象
将最后一行更改为:
stime = time.mktime(time.strptime(str(myDate), '%Y-%m-%d %H:%M:%S.%f'))
尽管time.strtime的第一个参数必须是字符串,而不是从datetime.datetime.now返回的datetime对象,但编辑中的代码确实将datetime对象转换为字符串
将最后一行更改为:
stime = time.mktime(time.strptime(str(myDate), '%Y-%m-%d %H:%M:%S.%f'))
编辑中的代码确实将datetime对象转换为字符串,但实际上,您会遇到溢出错误,因为您正在超越unix时代。一个简单的解决方案是重构代码以使用datetime和timedelta对象,这样您就不会有日期范围的问题。我自己做了重构,似乎是工作说明,我没有考虑时区的转租
from datetime import datetime, timedelta
import random
def strTimeProp(start, end, format, prop):
"""Get a time at a proportion of a range of two formatted times.
start and end should be strings specifying times formated in the
given format (strftime-style), giving an interval [start, end].
prop specifies how a proportion of the interval to be taken after
start. The returned time will be in the specified format.
"""
sdatetime = datetime.strptime(start, format)
edatetime = datetime.strptime(end, format)
# get time delta and calculate new delta in days * prop
delta = edatetime - sdatetime # this is a timedelta
propdelta = timedelta(days = prop * delta.days)
pdatetime = sdatetime + propdelta
return pdatetime.strftime(format)
def randomDate(start, end, prop):
return strTimeProp(start, end, '%Y-%m-%d %H:%M:%S.%f', prop)
b1=datetime.now()
print b1
startDate=b1-timedelta(27375)
print startDate
endDate=b1-timedelta(6571)
print endDate
randomDate=randomDate(str(startDate), str(endDate), random.random())
print randomDate
希望能有所帮助。事实上,您将遇到溢出错误,因为您正在超越unix时代。一个简单的解决方案是重构代码以使用datetime和timedelta对象,这样您就不会有日期范围的问题。我自己做了重构,似乎是工作说明,我没有考虑时区的转租
from datetime import datetime, timedelta
import random
def strTimeProp(start, end, format, prop):
"""Get a time at a proportion of a range of two formatted times.
start and end should be strings specifying times formated in the
given format (strftime-style), giving an interval [start, end].
prop specifies how a proportion of the interval to be taken after
start. The returned time will be in the specified format.
"""
sdatetime = datetime.strptime(start, format)
edatetime = datetime.strptime(end, format)
# get time delta and calculate new delta in days * prop
delta = edatetime - sdatetime # this is a timedelta
propdelta = timedelta(days = prop * delta.days)
pdatetime = sdatetime + propdelta
return pdatetime.strftime(format)
def randomDate(start, end, prop):
return strTimeProp(start, end, '%Y-%m-%d %H:%M:%S.%f', prop)
b1=datetime.now()
print b1
startDate=b1-timedelta(27375)
print startDate
endDate=b1-timedelta(6571)
print endDate
randomDate=randomDate(str(startDate), str(endDate), random.random())
print randomDate
希望能有帮助。你是想从新纪元开始计算秒数吗?@用户:请再说一遍?那么你想做什么?对不起,我不明白你的问题,我想:当我把像1936-02-21 14:16:18.936000这样的旧日期放在范围之外时,我得到了mktime参数。我读到它与《时代》有关,但我的英语太弱,无法理解它:/你想做什么?你的代码的目的是什么?你期望的输出是什么?如果需要,请使用谷歌翻译。重铸此对话没有任何意义。“自纪元以来的秒数”指自“1970-01-01 00:00:00 UTC”以来的秒数。这就是为什么它在1936年不起作用。那么stime应该代表什么呢?你是想从纪元开始计算秒数吗?@用户:对不起?那么你想做什么?对不起,我不明白你的问题,我想:当我把像1936-02-21 14:16:18.936000这样的旧日期放在范围之外时,我得到了mktime参数。我读到它与《时代》有关,但我的英语太弱,无法理解它:/你想做什么?你的代码的目的是什么?你期望的输出是什么?如果需要,请使用谷歌翻译。重铸此对话没有任何意义。“自纪元以来的秒数”指自“1970-01-01 00:00:00 UTC”以来的秒数。这就是为什么它在1936年不起作用。那么stime应该代表什么呢?