formatar data e valor dentro do JSON/Delphi

05/01/2022

8

Bom dia pessoal. Estou querendo formatar a data e valor retornado de um Json. A data esta saindo assim: 2022-01-03T00:00:00-03:00 (preciso que ela saia no formato brasileiro mesmo, somente 03-01-2022) e o valor pra ele deixar no modo real pois ele esta saindo assim: 551054.56 (preciso que ele saia 551.054,56).
Abaixo esta o JSON:

[{"nome":"LOTOF\u00C1CIL","numero_concurso":2412,"data_concurso":"2022-01-03T00:00:00-03:00","data_concurso_milliseconds":1641178800000,"local_realizacao":"S\u00C3O PAULO, SP","rateio_processamento":false,"acumulou":false,"valor_acumulado":0,"dezenas":["01","04","06","07","08","09","11","13","14","15","17","18","19","21","24"],"premiacao":[{"nome":"15 Acertos","quantidade_ganhadores":3,"valor_total":551054.56,"acertos":15},{"nome":"14 Acertos","quantidade_ganhadores":301,"valor_total":1645.14,"acertos":14},{"nome":"13 Acertos","quantidade_ganhadores":9466,"valor_total":25,"acertos":13},{"nome":"12 Acertos","quantidade_ganhadores":111929,"valor_total":10,"acertos":12},{"nome":"11 Acertos","quantidade_ganhadores":615719,"valor_total":5,"acertos":11}],"local_ganhadores":[{"local":"Canal Eletr\u00F4nico","cidade":"","uf":"","quantidade_ganhadores":1,"canal_eletronico":true},{"local":"BRASILIA\/DF","cidade":"BRASILIA","uf":"DF","quantidade_ganhadores":1,"canal_eletronico":false},{"local":"BELO HORIZONTE\/MG","cidade":"BELO HORIZONTE","uf":"MG","quantidade_ganhadores":1,"canal_eletronico":false}],"arrecadacao_total":19016535,"concurso_proximo":2413,"data_proximo_concurso":"2022-01-04T00:00:00-03:00","data_proximo_concurso_milliseconds":1641265200000,"valor_estimado_proximo_concurso":1500000,"valor_acumulado_especial":36275008.79,"nome_acumulado_especial":"Independ\u00EAncia","concurso_especial":false}]


Estou jogando algumas informações acima dentro de um TMemo
Retorno dentro do Memo:

2022-01-03T00:00:00-03:00  << aqui é pra ser 03-01-2022
551054.56                  << aqui é pra ser 551.054,56


abaixo segue o codigo que estou usando dentro do botão:
procedure TForm1.Button5Click(Sender: TObject);
var
  I: Integer;

  arrayP, ArrayI, ArrayR, ArrayD: TJSONArray;
  JSON2: string;
  x, premiacao, realizado, dezenas: Integer;

  data : TdateTime;
begin
  Memo2.Visible := False;

  if Edit1.Text = '' then
  begin
    ShowMessage('Escolha uma modalidade abaixo.');
  end
  else
  begin
    JSON := JSON.LoadFromURL('https://...'
      + Edit1.Text + '...=' + Edit2.Text + '');

    for I := 0 to JSON.Count - 1 do
    begin
      Memo1.Clear;
      Memo1.Lines.Add('[' + JSON.Items[I].ToJSON + ']');   
    end;
  end;

  JSON2 := Memo1.Lines.Text;

  arrayP := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(JSON2), 0) as TJSONArray;

  Memo1.Clear;

  for x := 0 to arrayP.Size - 1 do
  begin

	//preciso fazer a formatacao aqui para data dia/mes/ano
	//ta me retornando assim 2022-01-03T00:00:00-03:00
	//tem que fica somemte 2022-01-03 sendo 03-01-2022
    Memo1.Lines.Add(arrayP.Get(x).GetValue<string>('data_concurso')); 

	//preciso fazer a formatacao aqui para data 777.777,77
	//ta me retornando assim 551054.56 
	//tem que ficar 551.054,56
    Memo1.Lines.Add(arrayP.Get(x).GetValue<Double>('valor_acumulado_especial').ToString);

  end;
  arrayP.Destroy;
end;


Desde já grato pela ajuda..
Rubens Pena

Rubens Pena

Responder

Posts

05/01/2022

Natanael Ferreira

Veja um exemplo de formatação dos dados.

Tente adaptar ao seu caso:

var
  data_concurso, valor_concurso: string;
begin
  data_concurso := '2022-01-03T00:00:00-03:00';
  ShowMessage(Copy(data_concurso, 9, 2) + '-' + Copy(data_concurso, 6, 2) + '-' + Copy(data_concurso, 1, 4)); // retorna 03/01/2022

  valor_concurso := '551054.56';
  valor_concurso := StringReplace(valor_concurso, '.', ',', [rfReplaceAll]);
  ShowMessage(FormatFloat('#,##0.00', StrToFloatDef(valor_concurso, 0)));  // retorna 551.054,56
end;
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar