我正在从 PostgreSQL 数据库中读取时间戳字段。时间戳列定义为:
my_timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW()
从数据库读取时,我将其转换为像这样的 boost 时间戳:
boost::posix_time::ptime pt( boost::posix_time::time_from_string( str ) );
问题似乎是boost::posix_time::time_from_string()
忽略了时区。
例如:
database text string == "2013-05-30 00:27:04.8299-07" // note -07 timezone
boost::posix_time::to_iso_extended_string(pt) == "2013-05-30T00:27:04.829900"
当我对生成的 ptime 对象进行算术运算时,时间正好相差 7 小时。为了不丢失时区信息,我应该做些什么更好的事情?