C++ 通过SWIG从Python访问UtcTimeStamp

C++ 通过SWIG从Python访问UtcTimeStamp,c++,python,timestamp,swig,quickfix,C++,Python,Timestamp,Swig,Quickfix,我猜这是一个python vs SWIG的问题,比其他任何问题都重要 我使用一个带有SWIG Python绑定的C++包。 我收到的其中一个对象是UTC时间戳,我正试图从中提取时间戳 该对象具有以下特征: >>> print type(obj) <type 'SwigPyObject'> >>> print dir(obj) ['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__',

我猜这是一个python vs SWIG的问题,比其他任何问题都重要

我使用一个带有SWIG Python绑定的C++包。 我收到的其中一个对象是UTC时间戳,我正试图从中提取时间戳

该对象具有以下特征:

>>> print type(obj)
<type 'SwigPyObject'>

>>> print dir(obj)
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__hex__', '__init__', '__int__', '__le__', '__long__', '__lt__', '__ne__', '__new__', '__oct__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'acquire', 'append', 'disown', 'next', 'own']

>>> print obj
<Swig Object of type 'UtcTimeStamp *' at 0x0379F320>
打印类型(obj) >>>打印目录(obj) “UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,“否认”、“下一个”、“拥有”] >>>打印对象 如何从中提取数据


更新:
我发现这个类是从一个结构派生的,它是开源软件包的一部分


但是我仍然不知道如何访问数据。DateTime有一些简单的getter函数,比如getYear()-但是,如何访问它们呢?

您是否尝试过
obj.getYear()
?从文档中可以看出,
UTCTimeStamp
源自
DateTime
,因此您应该能够访问父类的方法

如果这不起作用,如果执行
newobj=obj.next()
,会得到什么类型的对象?您是否尝试过打印对象。\u\u文档?

编辑:来自:

这个指针值可以自由地传递给希望接收类型为。。。唯一不能做的就是从Python中取消对指针的引用

所以,您需要将其传递给C++函数的包装器,该函数可以使用<代码>日期时间< /代码>。我不知道具体是什么,因为我不知道你在包装什么

在这种情况下,也就是说。我相信,尽管我无法测试这一点,但你称之为:

import quickfix
converter = quickfix.UtcTimeStampConverter()
string = converter.convert(obj)

不要在时间字段上使用
qfTimeField.getValue()
,而是使用
qfTimeField.getString()
,然后只使用
strtime()
生成的字符串。例如:

qfSendingTime = fix.SendingTime()
message.getHeader().getField(qfSendingTime)
my_datetime = datetime.strptime(qfSendingTime.getString(), '%Y%m%d-%H:%M:%S.%f')

是的,我试过obj.getYear()收到:
AttributeError:'SwigPyObject'对象没有属性“getYear”
print obj.\uuu doc\uuuu
返回
Swig对象带有一个C/C++实例指针
你知道你库中的哪个C函数可以从你那里获取时间戳指针吗?不,我仍然不知道如何继续…一旦你
import quickfix
您应该能够通过查看
quickfix来找到正确的调用方法。然后是类的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
在我的编辑中(以防我的大小写错了什么)。这是一个非常好的答案,我自己也是这么做的。但是,您应该知道,在某些情况下,
strtime
可能会失败。这是python中涉及多线程的一个已知错误,请参阅当发生这种情况时,您可以通过调用
qfSendingTime.getString()
并忘记
strptime
来解决。然后,当您需要将日期字符串用于其他用途时,将其转换为其他类型