Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Registros de Facturacion y Eventos (XML) (https://www.clubdelphi.com/foros/forumdisplay.php?f=67)
-   -   Consulta - FechaHoraHusoGenRegistro (https://www.clubdelphi.com/foros/showthread.php?t=97690)

rafa1963 17-09-2025 12:04:20

Consulta - FechaHoraHusoGenRegistro
 
Bunas tardes compañer©s alguien me puede orientar de como puedo obtener de una fecha los valores para el registro "FechaHoraHusoGenRegistro".
Estoy utilizando para la extracción a un DBedit esto --> FormatDateTime('dd/mm/yyyy hh:nn:ss', FechaHora) pero no creo que sea lo que se necesita.
Agradecería vuestra ayuda.

Gracias

Neftali [Germán.Estévez] 17-09-2025 15:54:05

Puedes usar la función: DateToISO8601
https://docwiki.embarcadero.com/Libr....DateToISO8601

Para convertir de una fecha/hora "normal" a lo que necesita ese nodo del XML.

rafa1963 17-09-2025 18:47:31

respuesta
 
Gracias por tu pronta respuesta German.
Lo he puesto de esta forma

Código Delphi [-]
{$R *.DFM}

function DateToISO8601(const ADate: TDateTime; AInputIsUTC: Boolean = true): string;
 Var
  FechaISO: string;
begin
  FechaISO := DateToISO8601(Now, False); // Now obtiene la fecha/hora actual
end;

y en el XML

Código Delphi [-]
SistemaInformatico.AddChild('FechaHoraHusoGenRegistro').Text := (FechaISO);
Pero me da error.
Me puedes ayudar ???.
Gracias

Carlos 17-09-2025 19:57:07

Cita:

Empezado por rafa1963 (Mensaje 567816)
Gracias por tu pronta respuesta German.
Lo he puesto de esta forma

{$R *.DFM}

function DateToISO8601(const ADate: TDateTime; AInputIsUTC: Boolean = true): string;
Var
FechaISO: string;
begin
FechaISO := DateToISO8601(Now, False); // Now obtiene la fecha/hora actual
end;

y en el XML

SistemaInformatico.AddChild('FechaHoraHusoGenRegistro').Text := (FechaISO);
Pero me da error.
Me puedes ayudar ???.
Gracias

Estaría bien saber el error y que valor está tomando 'FechaISO'.

rafa1963 18-09-2025 10:17:20

Respuesta
 
Hola Carlos, gracias por tu pronta respuesta. Señalar que yo trabajo con delphi 2010.
Este es el código que meto en un botón para capturar la fecha actual de un DateTimePicker

Código Delphi [-]
var
MiFecha : TDatetime;
  FechaISO: string;
begin
MiFecha := datetimePicker1.Datetime;
 FechaISO := FormatDateTime('yyyy-MM-dd\"T"\HH:mm:ss.SSSZ',MiFecha); 
  // Para mostrarla 
  ShowMessage(FechaISO);
end

Pero creo que esto no está correcto.
Gracias.

Neftali [Germán.Estévez] 18-09-2025 10:22:33

Por favor, utiliza TAG's cuando añadas código a los mensajes.

Neftali [Germán.Estévez] 18-09-2025 10:29:44

Lo primero que hay que saber es si tu versión de Delphi soporta la función que te he puesto: DateToISO8601

Si la soporta, sólo debes usarla para convertir tu valor de fecha en una cadena (string):

Código Delphi [-]
implementation

{$R *.dfm}
uses
  System.DateUtils;

procedure TForm4.Button1Click(Sender: TObject);
var
  fecha:TDateTime;
  str1, str2:string;
begin
  fecha := Date();  // obtener fecha y hora actual;
  str1 := DateToISO8601(fecha, True);
  str2 := DateToISO8601(fecha, False);
  ShowMessage('Fecha con AinputUTC a True:  ' + str1 + sLineBreak +
              'Fecha con AinputUTC a False: ' + str2);
end;

Si tu dato viene de un campo como comentas, pues utiliza el valor del campo (no del componente), por ejemplo:

Código Delphi [-]
str2 := DateToISO8601(Tabla1.FieldByName('CampoFecha').AsDateTime, False);

Si tu versión de delphi no lo soporta, pues deberás formatearla tú como has hecho más arriba con un FormartDateTime.

razorxxx 29-09-2025 09:27:43

Se me pasa por la cabeza el cómo debe actuar un SIF ante la siguiente situación:

Cada vez que se va a generar un RF, leo la fecha-hora del servidor ROA (https://www2.roa.es/cgi-bin/horautc) para que tenga una fecha-hora oficial. Imaginemos que un RF se generó de esta manera, pero el siguiente que se genera falló la petición al ROA y se cogió la fecha-hora del sistema (equipo local) y resulta que dicha fecha-hora es anterior a la del último RF generado. ¿Qué deberíamos hacer en estos casos? ¿Tendríamos que enlazar igualmente el nuevo registro (fecha más vieja) con el anterior (fecha más reciente)? ¿Detecta el webservice de la AEAT que el RF generado de último tiene una FechaHoraHusoGenRegistro inferior a la del anterior con el que está concatenado?

Lo pregunto porque si se concatena después del último generado independientemente de tener una fechahorahusogenregistro inferior, habría que guardar en una tabla el último RF generado por SIF, NumInstalacion y NIFEmisor.

Gracias de antemano. Un saludo.


La franja horaria es GMT +2. Ahora son las 22:56:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi