Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Timestamp dönüştürme
#1
Merhaba,
json datadan okuduğum timestamp formatını nasıl datetime a çevirebilirim,
okuduğum data : 1611939307000 


procedure Tfrm_Main.prLoad_modem_inbox_teltonika(modem_inbox,
modem_inbox_detail, modem_id: string);
var
  ListItem :TListItem;
  JSONObject, Delphi             : TJsonObject;

  io_part,JSONObject_io_part      : TJsonObject;
  timestamp,JSONObject_timestamp  : TJsonObject;
  eventId: TJSONArray;
  i:integer;
  data,elements_id,elements_value,odo,test: string;

  timestamp_data: string;
  timestamp_data2: Tdatetime;
  TS : TTimeStamp;

begin
 Lst_modem_info.Items.Clear;
 Lst_modem_info.Items.beginUpdate;
 try
  ADO_032.Close;
  ADO_032.open;

    pQry_modem_db.Close;
    pQry_modem_db.SQL.Clear;
    pQry_modem_db.SQL.Add(' SELECT TOP (10) ');
    pQry_modem_db.SQL.Add('A.rec_id AS line_id,A.modem_id,A.raw_data as raw_data,C.message_name ');
    pQry_modem_db.SQL.Add('FROM [MODEMDB].[dbo].[teltonika_inbox] A WITH (NOLOCK)');
    pQry_modem_db.SQL.Add('   LEFT JOIN [MODEMDB].[dbo].modem_list B WITH (NOLOCK) ON (B.rec_id = A.modem_id)');
    pQry_modem_db.SQL.Add('    INNER JOIN [MODEMDB].[dbo].generic_message_list C WITH (NOLOCK) ON C.message_id = A.message_id ');
    pQry_modem_db.SQL.Add('         WHERE B.rec_id = Tongue_paket_id  order by line_id desc');
    pQry_modem_db.Parameters.ParamByName('P_paket_id').DataType := ftString;
    pQry_modem_db.Parameters.ParamByName('P_paket_id').Value := modem_id;
    pQry_modem_db.Open;
    if pQry_modem_db.RecordCount >0 then
    begin
    while NOT pQry_modem_db.eof do
      begin
        JSONObject          := TJsonObject.Create;
        JSONObject_io_part  := TJsonObject.Create;
        Delphi              := TJsonObject.Create;
        io_part             := TJsonObject.Create;
        data := pQry_modem_db.FieldByName('raw_data').AsString;
        JSONObject_io_part.Parse(BytesOf(data), 0);
        JSONObject.Parse(BytesOf(data), 0);
        io_part.Parse(BytesOf(JSONObject.Values['io'].ToString), 0);
        Delphi.Parse(BytesOf(JSONObject.Values['gps'].ToString), 0);
          ListItem :=  Lst_modem_info.Items.Add;
          ListItem.Caption := device_data_give (Lst_pos_info.Selected.Index).Plate;
          ListItem.SubItems.Add(pQry_modem_db.FieldByName('line_id').AsString);
          ListItem.SubItems.Add(pQry_modem_db.FieldByName('message_name').AsString);

                JSONObject_timestamp := TJsonObject.Create;
                timestamp            := TJsonObject.Create;
                JSONObject_timestamp.Parse(BytesOf(data), 0);
                timestamp.Parse(BytesOf(JSONObject.Values['timestamp'].ToString),0);
           timestamp_data := JSONObject_timestamp.GetValue('timestamp').ToString;
          ListItem.SubItems.Add(JSONObject_timestamp.GetValue('timestamp').ToString);

        eventId := io_part.GetValue('elements')  as TJSONArray;
            for I := 0 to eventId.Count-1 do
                   begin
                            io_part             := TJsonObject.Create;
                            try
                            io_part.Parse(BytesOf(eventId.Items[i].ToString), 0);
                            elements_id     := io_part.GetValue('id').ToString;
                            elements_value  := io_part.GetValue('value').ToString;
                            if (elements_id = '239') and (elements_value = '"00"') then ListItem.SubItems.Add('Kapalı');
                            if (elements_id = '239') and (elements_value = '"01"') then ListItem.SubItems.Add('Açık');
                            if (elements_id = '16')  then odo := elements_value;

                           finally
                                io_part.Free;
                           end;
                   end;
          ListItem.SubItems.Add(Delphi.GetValue('speed').ToString);
          ListItem.SubItems.Add(Delphi.GetValue('satellites').ToString);
          ListItem.SubItems.Add(odo);
          ListItem.SubItems.Add(Delphi.GetValue('longitude').ToString);
          ListItem.SubItems.Add(Delphi.GetValue('latitude').ToString);
          ListItem.SubItems.Add(pQry_modem_db.FieldByName('raw_data').AsString);
          JSONObject_io_part.Free;
          JSONObject.Free;
          Delphi.Free;
          timestamp.Free;
        pQry_modem_db.Next;
      end;
      end;
 finally
    Lst_modem_info.Items.EndUpdate;
end;
end;
Cevapla
#2
Merhaba,
Forum'a hoş geldiniz.
Bundan sonraki konu başlıklarınızda Türkçe kullanmaya özen gösterirseniz mutlu oluruz.
Ayrıca kod örneklerini ilgili kod biçimlendirme araçlarını kullanarak paylaşır iseniz daha sağlıklı olacaktır.
Konunuz düzenlenmiştir.
kodbicim.jpg
Cevapla
#3
(29-01-2021, Saat: 21:18)serdal_aksoy Adlı Kullanıcıdan Alıntı: Merhaba,
json datadan okuduğum timestamp formatını nasıl datetime a çevirebilirim,
okuduğum data : 1611939307000 


procedure Tfrm_Main.prLoad_modem_inbox_teltonika(modem_inbox,
modem_inbox_detail, modem_id: string);
var
  ListItem :TListItem;
  JSONObject, Delphi             : TJsonObject;

  io_part,JSONObject_io_part      : TJsonObject;
  timestamp,JSONObject_timestamp  : TJsonObject;
  eventId: TJSONArray;
  i:integer;
  data,elements_id,elements_value,odo,test: string;

  timestamp_data: string;
  timestamp_data2: Tdatetime;
  TS : TTimeStamp;

begin
 Lst_modem_info.Items.Clear;
 Lst_modem_info.Items.beginUpdate;
 try
  ADO_032.Close;
  ADO_032.open;

    pQry_modem_db.Close;
    pQry_modem_db.SQL.Clear;
    pQry_modem_db.SQL.Add(' SELECT TOP (10) ');
    pQry_modem_db.SQL.Add('A.rec_id AS line_id,A.modem_id,A.raw_data as raw_data,C.message_name ');
    pQry_modem_db.SQL.Add('FROM [MODEMDB].[dbo].[teltonika_inbox] A WITH (NOLOCK)');
    pQry_modem_db.SQL.Add('   LEFT JOIN [MODEMDB].[dbo].modem_list B WITH (NOLOCK) ON (B.rec_id = A.modem_id)');
    pQry_modem_db.SQL.Add('    INNER JOIN [MODEMDB].[dbo].generic_message_list C WITH (NOLOCK) ON C.message_id = A.message_id ');
    pQry_modem_db.SQL.Add('         WHERE B.rec_id = Tongue_paket_id  order by line_id desc');
    pQry_modem_db.Parameters.ParamByName('P_paket_id').DataType := ftString;
    pQry_modem_db.Parameters.ParamByName('P_paket_id').Value := modem_id;
    pQry_modem_db.Open;
    if pQry_modem_db.RecordCount >0 then
    begin
    while NOT pQry_modem_db.eof do
      begin
        JSONObject          := TJsonObject.Create;
        JSONObject_io_part  := TJsonObject.Create;
        Delphi              := TJsonObject.Create;
        io_part             := TJsonObject.Create;
        data := pQry_modem_db.FieldByName('raw_data').AsString;
        JSONObject_io_part.Parse(BytesOf(data), 0);
        JSONObject.Parse(BytesOf(data), 0);
        io_part.Parse(BytesOf(JSONObject.Values['io'].ToString), 0);
        Delphi.Parse(BytesOf(JSONObject.Values['gps'].ToString), 0);
          ListItem :=  Lst_modem_info.Items.Add;
          ListItem.Caption := device_data_give (Lst_pos_info.Selected.Index).Plate;
          ListItem.SubItems.Add(pQry_modem_db.FieldByName('line_id').AsString);
          ListItem.SubItems.Add(pQry_modem_db.FieldByName('message_name').AsString);

                JSONObject_timestamp := TJsonObject.Create;
                timestamp            := TJsonObject.Create;
                JSONObject_timestamp.Parse(BytesOf(data), 0);
                timestamp.Parse(BytesOf(JSONObject.Values['timestamp'].ToString),0);
           timestamp_data := JSONObject_timestamp.GetValue('timestamp').ToString;
          ListItem.SubItems.Add(JSONObject_timestamp.GetValue('timestamp').ToString);

        eventId := io_part.GetValue('elements')  as TJSONArray;
            for I := 0 to eventId.Count-1 do
                   begin
                            io_part             := TJsonObject.Create;
                            try
                            io_part.Parse(BytesOf(eventId.Items[i].ToString), 0);
                            elements_id     := io_part.GetValue('id').ToString;
                            elements_value  := io_part.GetValue('value').ToString;
                            if (elements_id = '239') and (elements_value = '"00"') then ListItem.SubItems.Add('Kapalı');
                            if (elements_id = '239') and (elements_value = '"01"') then ListItem.SubItems.Add('Açık');
                            if (elements_id = '16')  then odo := elements_value;

                           finally
                                io_part.Free;
                           end;
                   end;
          ListItem.SubItems.Add(Delphi.GetValue('speed').ToString);
          ListItem.SubItems.Add(Delphi.GetValue('satellites').ToString);
          ListItem.SubItems.Add(odo);
          ListItem.SubItems.Add(Delphi.GetValue('longitude').ToString);
          ListItem.SubItems.Add(Delphi.GetValue('latitude').ToString);
          ListItem.SubItems.Add(pQry_modem_db.FieldByName('raw_data').AsString);
          JSONObject_io_part.Free;
          JSONObject.Free;
          Delphi.Free;
          timestamp.Free;
        pQry_modem_db.Next;
      end;
      end;
 finally
    Lst_modem_info.Items.EndUpdate;
end;
end;

Merhabalar,

   

uses
 System.DateUtils;


procedure TForm1.Button1Click(Sender: TObject);
var
 Tarih : TDateTime;
begin
        Tarih:=UnixToDateTime(StrToInt64(Edit1.Text) div 1000,True);
        Edit2.Text:=DateTimeToStr(Tarih);
end;



Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#4
Selamlar,
SOAP ve REST mesajlarında ISO 8601 kullanmanız daha uygun olacaktır. Endüstri standardı olarak saptanmıştır ve ayrıca REST kütüphanesi içinde ISO8601 formatından TDateTime formatına ve tersi dönüştürme mevcuttur. İlgili dönüştürme yordamlarını System.DateUtils kod dosyası içinde bulabilirsiniz.

  function ISO8601ToDate(const AISODate: string; AReturnUTC: Boolean = True): TDateTime;
  function TryISO8601ToDate(const AISODate: string; out Value: TDateTime; AReturnUTC: Boolean = True): Boolean;
  function DateToISO8601(const ADate: TDateTime; AInputIsUTC: Boolean = True): string;

http://docwiki.embarcadero.com/Libraries...eToISO8601

45417052-f4e19780-b689-11e8-997a-512e4c57d49b.png
Cevapla
#5
İlgilinze teşekkür ederim,
time zone kısmını nasıl eklerim,

Teşekkürler,
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Online Xslt Editör | Base64 Resim Dönüştürme ahmet6513 5 1.461 08-08-2025, Saat: 12:30
Son Yorum: ahmet6513
  Unix Timestamp çalışma mantığı hakkında mxpain 1 547 14-10-2024, Saat: 10:42
Son Yorum: frmman
  Qreport dan pdf e dönüştürme noname101 15 8.099 28-06-2022, Saat: 06:52
Son Yorum: erkutolga
Question Delphi de xml dosyalarını jsona dönüştürme XmlToJson delphicim 1 1.299 16-06-2022, Saat: 09:27
Son Yorum: ugorkem
  Bitfields dönüştürme. seci20 6 3.361 01-02-2021, Saat: 08:08
Son Yorum: seci20



Konuyu Okuyanlar: 1 Ziyaretçi