Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SuperObject从JSON读取日期时间?_Json_Delphi_Delphi Xe_Superobject - Fatal编程技术网

如何使用SuperObject从JSON读取日期时间?

如何使用SuperObject从JSON读取日期时间?,json,delphi,delphi-xe,superobject,Json,Delphi,Delphi Xe,Superobject,我正在使用SuperObject库处理JSON 我有这个JSON(Mozilla FireFox的一部分,Chrome书签文件): “根”:{ “书签栏”:{ “儿童”:[{ “添加日期”:“1300966394200000”, “id”:“11”, “元信息”:“{\”同步\“:{\”事务版本\“:\”3\“}}”, “名称”:“\u041D\u0430\u0447\u0430\u043B\u044C\u043D\u0430\u044F\u0441\u0442\u0440\u0430\u043

我正在使用SuperObject库处理JSON

我有这个JSON(Mozilla FireFox的一部分,Chrome书签文件):

“根”:{
“书签栏”:{
“儿童”:[{
“添加日期”:“1300966394200000”,
“id”:“11”,
“元信息”:“{\”同步\“:{\”事务版本\“:\”3\“}}”,
“名称”:“\u041D\u0430\u0447\u0430\u043B\u044C\u043D\u0430\u044F\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430”,
“类型”:“url”,
“url”:”http://www.mozilla.com/ru/firefox/central/"
}, {
我尝试使用函数JavaTimeToDelphiDateTime将数据作为整数,但它不起作用


我需要将“date\u added”字段读取为TDateTime。如何使用SuperObject库执行此操作?解决方案:

function JavaTimeToDateTime(javatime:Int64):TDateTime;
// java time -> Win32 file time -> UTC time
// adjust to active time zone -> TDateTime
var
  UTCTime, LocalTime: TSystemTime;
begin
  FileTimeToSystemTime(TFileTime(Int64(javatime + 11644473600000) * 10000), UTCTime);
  SystemTimeToTzSpecificLocalTime(nil, UTCTime, LocalTime);
  Result := SystemTimeToDateTime(LocalTime);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  //13009663942000000 is the value, read from "date_added" field as Int64.
  ShowMessage(DateTimeToStr(JavaTimeToDateTime((13009663942000000 div 10000))));
end;

您的JSON时间戳似乎以微秒为单位(而不是以毫秒为单位)。将其作为
Int64
值读取,但在将其传递给
JavaTimeToDelphiDateTime
函数之前,请将其转换为函数所需的单位()。谢谢。该函数还返回01.02.5042 12:34:21:d 1000上的I div值,以毫秒为单位进行转换,结果保持错误。如果我将数据div为百万,我得到的是1970年4月5日…我对您用于转换的函数一无所知(因为它不是Delphi的一部分)。我只是尝试使用“假设此时间戳的单位为微秒(1/1000000秒):Thu,2011年3月24日11:33:14 GMT”,这看起来很合理。请将您用于转换的代码包括在问题中。除此之外,还要详细说明什么“不起作用”"意思-你得到了什么结果,你期望得到什么。好吧,你似乎不想更新你的问题…没关系。用你的值除以10000,你会得到24.3.2011 12:33:14。很难说这是否是你想要得到的,也很难说为什么。这就是你的问题应该包含的内容。同时,我投票了这个问题我现在已经更新了我的帖子。谢谢你的帮助!你能回答这个问题吗?