python语法datetime

mat*_*tel 0 python datetime

为什么这两个代码之间的日期输出格式不同?一个是datetime对象,另一个似乎是一个字符串(我更喜欢字符串外观相似的格式).我错过了什么?

def generator():

    i=0
    while (i<50000):
        yield random.randint(-1, 1), datetime.datetime.now()
        i=i+1

mynumber = 100

for random_number, current_time in generator():
    mynumber += random_number  

print mynumber,",", current_time
Run Code Online (Sandbox Code Playgroud)

输出:

>>> 100 , 2013-04-04 09:16:55.730000
101 , 2013-04-04 09:16:55.746000
Run Code Online (Sandbox Code Playgroud)

第二个例子:

def test(timestamp,interval = 1*60):
    xt = datetime.datetime(2013, 4,4)
    #dt = datetime.datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S')
    dt=timestamp
    delta_second =(dt - xt).seconds
    normalize_second = (delta_second / interval) * interval
    newtime = xt + timedelta(seconds=normalize_second)
    print (dt,newtime)

test(datetime.datetime.now())
Run Code Online (Sandbox Code Playgroud)
>>> (datetime.datetime(2013, 4, 4, 9, 21, 12, 386000), datetime.datetime(2013, 4, 4, 9, 21))

Mar*_*ers 5

你正在打印不同的东西.在第一个示例中,您可以直接打印日期时间,因此print将其转换为str().

在第二个示例中,您打印一个元组,并且总是使用内容打印元组repr():

>>> now = datetime.datetime.now()
>>> print now
2013-04-04 10:28:10.029566
>>> print (now,)  # tuple
(datetime.datetime(2013, 4, 4, 10, 28, 10, 29566),)
>>> print repr(now)
datetime.datetime(2013, 4, 4, 10, 28, 10, 29566)
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,您仍然在打印datetime对象.