1

我有一堆字符串以这种格式“2012-10-25”表示时间。我想对其进行加法,例如,在“2012-10-25”中添加一天,我想得到“2012-10-26”。我是否必须将字符串更改为日期时间对象才能执行此操作?我该怎么做?

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

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

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

4

3 回答 3

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

于 2013-11-07T08:52:10.523 回答
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]

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

于 2013-11-07T09:04:31.717 回答
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

请注意datetime64API不同的numpy 版本上有所不同。

请参阅datetime、Timestamp 和 datetime64 之间的转换

于 2013-12-11T19:41:41.407 回答