DBF 日期时间类型在二进制文件如何存储的

jsdwangbing 2017-09-01 10:34:23
最近做一个项目,有一个餐饮系统的dbf 文件,就是foxpro 开发的那种格式软件,我想请问下大神,有一个是日期时间类型,内存中的格式为 0x8c 0x81 0x25 0x00 0x00 0x46 0x0c 0x03 代表 2017/08/30 02:12:16 问下咋转换的吗?研究了好几天 根本就不明白到底咋回事
...全文
397 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
newregg 2018-03-15
  • 打赏
  • 举报
回复
这个日期时间类型,是个8字节的数据,其中前4字节表示日期,后4字节表示时间。前4字节是一个32位整数,文件中看是Little-Endian排列,表示从公元前4713年1月1日到现在的天数,这个可以参考儒略日的计算方法。后4字节是是一个表示当天0点开始经过的毫秒数的32位整数,换算后可以得到时分秒的数据。
sdghchj 2017-09-01
  • 打赏
  • 举报
回复
你给的数据应该不是时间戳,你说是内存中看到的,那到底是怎么从DBF来的,如果是别人自定义的转换过程,就得问之前开发的人了
jsdwangbing 2017-09-01
  • 打赏
  • 举报
回复
真心拜托了 小白一个,因为项目用到这个时间戳,把现在的某一时刻时间以二进制方式写到这个dbf文件中 ,不清楚里面咋赚的,几天时间都没搞定
jsdwangbing 2017-09-01
  • 打赏
  • 举报
回复
那是把这个 0x8c 0x81 0x25 0x00 0x00 0x46 0x0c 0x03 十六进制转换为秒数吗 但是好像不怎么对,能否详细的推理下
sdghchj 2017-09-01
  • 打赏
  • 举报
回复

time_t t;
time(&t); //得到时间戳
struct tm* st = localtime(&t);  //st就是年月日时分秒
sdghchj 2017-09-01
  • 打赏
  • 举报
回复
数据库的时间字段都是存的timestamp,就是时间戳,即1970年1月1日到现在经历的秒数或者毫秒数。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧