1 vnpy 2.1.4以后的系统中使用的CHINA_TZ 的时间标准
现在绝大部分模块用、应用都已经对使用到的时间做了本地化处理,因此,如果你有一个新构造的datetime变量,应该先在使用CHINA_TZ.localize(),然后再使用,就会避免因为时区不同导致的时间比较上的错误。方法如下:
import pytz
CHINA_TZ = pytz.timezone("Asia/Shanghai")
CHINA_TZ.localize(dt_var)
2 数据下载模块中下载的数据中的时间没有做本地化处理
数据下载模块从米筐下载的数据,下载到本地本地供仿真和实盘使用,可是vnpy没有对其数据中的时间做本地化处理,直接使用会有问题。
虽然他们看来是一样的时间刻度,可和实盘中的时间下单和成交时间有几分钟的差距,
同样的时间面值,因为时区的不同导致比较得不到想要的结果:
下面的dt1和dt2是为把数据库中的时间做比较得到,其中:
dt1是数据库中数据的时间,它们的时区是+08:06,
dt2是成交单中数据的时间,它们的时区是+08:00
【dt1=2020-08-13 21:00:00+08:06,dt2=2020-08-13 21:00:01+08:00 ix=375】
【dt1=2020-08-13 21:14:00+08:06,dt2=2020-08-13 21:14:46+08:00 ix=389】
【dt1=2020-08-13 21:21:00+08:06,dt2=2020-08-13 21:21:59+08:00 ix=396】
【dt1=2020-08-13 21:39:00+08:06,dt2=2020-08-13 21:39:53+08:00 ix=414】
【dt1=2020-08-14 01:44:00+08:06,dt2=2020-08-14 01:44:35+08:00 ix=659】
它们带来的问题是
1)不可以直接比较,必须先转化为相同是时区配置才可以比较
2)很迷糊人,看似相同的时间,可重新就是判断是不想等