从PostgreSQL DB和Linux转移了C / C中的时间戳
Shifted timestamp in C/C from PostgreSQL DB and Linux?
我在Linux上使用C++和libpq(PostgreSQL C库(和gcc和PostgreSQL 8.2.19。我使用的是"时区时间戳"类型的列。libpq 以 C 字符串的形式返回查询结果。有时(并非总是(我发现返回的字符串向前移动了一个小时(但与其他字符串具有相同的时区:+02,即 CEST(。我验证了问题直接出在查询返回的字符串中(一个普通的 SELECT,其列的名称包含"时区时间戳"类型(,而不是后续转换和大多数执行运行。这是Linux和/或PostgreSQL的一种(已知的(错误吗?
编辑:有一次在以下转换中发生了错误,所以我在我的平台上尝试了这段代码(显然包括库(http://codepad.org/HiBbjX0V实际上,即使这样也不连贯,但错误恰恰相反:大多数时间时间向前移动一小时,只有在第二个输出中,小时仍然是 11:33:52,就像在代码中一样。我尝试了使用手动小时设置和互联网小时来的 Ubuntu。这两种情况都有错误。我认为错误在系统级别,但我不知道是什么。
编辑:我不再确定错误也来自 PostgreSQL,因为带有时间戳的行会快速连续更新两次,也许 erorr 是由于第一次更新,小时转换为 Linux 类型,如我在代码中所示。
由于我的恐惧经历,我犯了一个愚蠢的错误。正如您在代码键盘上的代码中看到的那样,我使用 malloc 分配了结构 tm* 数据,使用 localtime(&now( 初始化,现在time_t now = time(NULL( 时间得到正确处理。我认为如果不这样做,结构 tm* 类型的变量"不知道"时区。
相关文章:
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 在多个时间戳处执行函数
- 以天C++为单位的两个时间戳之间的差异
- 获取 QInputEvent 在 Qt 4.8 中被放入 QEventLoop 队列时的时间戳
- 在 C++ 中为文件名添加时间戳
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- 如何将消息时间戳写入日志文件?
- 将时间戳打印到流的最简单方法
- 读取悖论时间戳字段
- C++程序中多个位置的时间 (0) 时间戳
- 在 c++ 中获取 X 毫秒前的时间戳
- 将 unix 时间戳转换为人类可读的日期
- Microsoft NTLM (v2) 中的时间戳使用
- C++中上周一的时间戳
- C++-需要读取存储在文件(.txt)中的时间戳并正确检索
- 使用 C++将时间戳转换为格式化的日期时间
- 从PostgreSQL DB和Linux转移了C / C中的时间戳