Fórum formatar data e valor dentro do JSON/Delphi #617460
05/01/2022
0
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:
Estou jogando algumas informações acima dentro de um TMemo
Retorno dentro do Memo:
abaixo segue o codigo que estou usando dentro do botão:
Desde já grato pela ajuda..
Abaixo esta o JSON:
1 | [{ "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:
1 2 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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 + 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
Curtir tópico
+ 0
Responder
Posts
05/01/2022
Natanael Ferreira
Veja um exemplo de formatação dos dados.
Tente adaptar ao seu caso:
Tente adaptar ao seu caso:
1 2 3 4 5 6 7 8 9 10 | 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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)