node.js中使用thrift的历元日期不正确
我似乎在node.js中获得的thrift对象的历元日期值与存储在mongo数据库中并由服务返回的值不同 节约定义文件(节约v0.9.0),我有 蒙戈唱片node.js中使用thrift的历元日期不正确,node.js,integer,thrift,epoch,Node.js,Integer,Thrift,Epoch,我似乎在node.js中获得的thrift对象的历元日期值与存储在mongo数据库中并由服务返回的值不同 节约定义文件(节约v0.9.0),我有 蒙戈唱片 "createdTimestamp" : NumberLong("1366334385361"), "lastUpdatedTimestamp" : NumberLong("1366334385361") 节点报告 createDate: 534785233, lastUpdateDate: 534785233 生成的节点thrift客户
"createdTimestamp" : NumberLong("1366334385361"),
"lastUpdatedTimestamp" : NumberLong("1366334385361")
节点报告
createDate: 534785233,
lastUpdateDate: 534785233
生成的节点thrift客户端似乎引用了I64
if (this.createDate !== null && this.createDate !== undefined) {
output.writeFieldBegin('createDate', Thrift.Type.I64, 14);
output.writeI64(this.createDate);
output.writeFieldEnd();
}
我很欣赏你的见解
感谢给定数字的二进制表示法是:
1366334385361 -> 10011111000011111111000000010110011010001
534785233 -> 00000000000011111111000000010110011010001
i、 e.如果取1366334385361的低32位,则得到534785233。因此,在您正在使用的程序或软件包的某个地方,它被转换/截断为32位整数,例如int(1366334385361)给定数字的二进制表示为:
1366334385361 -> 10011111000011111111000000010110011010001
534785233 -> 00000000000011111111000000010110011010001
i、 e.如果取1366334385361的低32位,则得到534785233。因此,在您正在使用的程序或包的某个地方,它被转换/截断为32位整数,例如int(1366334385361)感谢您确认该数字是一个被截断的32位整数。java thrift服务提供商已确认,他们在mongo中检索的64位长数字在thrift服务响应中正确输出。我会再确认一下。thrift定义文件将其标识为I64,节点thrift客户端被称为具有64位支持。我试图在节点或java端将其排除为thrift bug。感谢您确认该数字为截断的32位整数。java thrift服务提供商已确认,他们在mongo中检索的64位长数字已在thrift服务响应中正确输出。我会再确认一下。thrift定义文件将其标识为I64,节点thrift客户端被称为具有64位支持。我试图帮助排除节点或java端的节俭bug。正在返回的配置文件的Java服务源具有
private long createdTimestamp
私人long lastUpdatedTimestamp代码>可能与其他数据点有关:服务是用Java编写的。正在返回的配置文件的Java服务源具有private long createdTimestamp
私人long lastUpdatedTimestamp代码>可能与某个事件相关?