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



我有一堆字符串以这种格式'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',这意味着它只得到了字符串中的第一个字节。我想知道这里出了什么问题以及如何解决它。多谢!

 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

如果你想在没有任何额外软件包的情况下做到这一点:

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'

您可以使用

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

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

请参阅在日期时间、时间戳和日期时间之间进行转换64

最新更新