字符串和日期时间对象交换

时间:2013-11-07 08:49:17

标签: python string datetime numpy

我有一串字符串表示时间格式为'2012-10-25'。我想对它进行补充,例如,在'2012-10-25'中添加一天,我想得到'2012-10-26'。我是否必须将字符串更改为datetime对象才能执行此操作?我应该怎么做?

假设我已经完成了,现在我想将这个新字符串分配给numpy.narray。我试过了:

pad = numpy.zeros((1,2), dtype=numpy.str)
padd[0,0]='2012-10-26'

但padd [0,0]只有'2',这意味着它只得到字符串中的第一个字节。我想知道这里有什么问题以及如何解决它。非常感谢!

3 个答案:

答案 0 :(得分:1)

 from dateutil.parser import parse as parse_date
 from datetime import timedelta
 my_date = parse_date(string_date, dayfirst=False)
 my_date = (my_date + timedelta(hours=24))

http://snag.gy/hQy2R.jpg

答案 1 :(得分:0)

如果你想在没有任何额外包裹的情况下这样做:

import datetime
import numpy

time_string = '2012-10-26'

date_object = datetime.datetime.strptime(time_string, '%Y-%m-%d')

print str(date_object)
later_date_object = date_object + datetime.timedelta(0,3) # days, seconds, then other fields.
print str(later_date_object)

pad = numpy.zeros((1,2), dtype='object')
pad[0,0] = time_string

print pad[0,0]

请注意,您需要为numpy数组指定dtype='object'

答案 2 :(得分:0)

您可以使用numpy.datetime64类型:

import numpy as np

assert np.__version__[:3] == '1.7'
pad = np.empty((1,2), dtype='datetime64[D]') #NOTE: empty
pad[0,0] = np.datetime64('2012-10-26', 'D')
print(pad[0,0]) # -> 2012-10-26
pad[0,0] += np.timedelta64(1, 'D') # add 1 day
print(pad[0,0]) # -> 2012-10-27

请注意不同 numpy版本上的datetime64 API不同

请参阅Converting between datetime, Timestamp and datetime64