delphi - validar - ''23/02/2011 12:34:56 ''no es una fecha y hora válidas
obtener la hora del sistema en delphi (3)
Esto se debe a que el formato de fecha / hora en su código no coincide con el formato de fecha / hora para su configuración regional.
De la documentación (D2009):
El parámetro S debe usar el formato de fecha / hora del local actual. En los EE. UU., Este es comúnmente el formato MM / DD / AA HH: MM: SS. Especificar AM o PM como parte del tiempo es opcional, al igual que los segundos. Use el horario de 24 horas (7:45 PM se ingresa como 19:45, por ejemplo) si no se especifica AM o PM.
Si está utilizando un Delphi anterior, StrToDateTime puede requerir un formato específico. De los documentos (D5 en este caso):
El parámetro S debe estar en el formato MM / DD / YY HH: MM: SS. Especificar AM o PM como parte del tiempo es opcional, al igual que los segundos. Use el horario de 24 horas (7:45 PM se ingresa como 19:45, por ejemplo) si no se especifica AM o PM.
En mi código me enfrento a un problema. Código de ejemplo:
var
d1: tdatetime
begin
d1 := strtodatetime(''23/02/2011 12:34:56'');
end;
pero está dando el error:
''23 / 02/2011 12:34:56 ''no es una fecha y hora válidas
¿Qué está mal con lo que estoy haciendo?
La función StrToDateTime utiliza ShortDateFormat
y DateSeparator
para convertir la parte de fecha y LongTimeFormat
y TimeSeparator
en la parte de tiempo. por lo tanto, la cadena debe coincidir con estas variables para convertir la cadena a TDateTime. en su lugar, puede utilizar el StrToDateTime con el parámetro TFormatSettings
, para analizar su cadena.
function StrToDateTime(const S: string; const FormatSettings: TFormatSettings): TDateTime;
ver esta muestra
Var
StrDate : string;
Fmt : TFormatSettings;
dt : TDateTime;
begin
fmt.ShortDateFormat:=''dd/mm/yyyy'';
fmt.DateSeparator :=''/'';
fmt.LongTimeFormat :=''hh:nn:ss'';
fmt.TimeSeparator :='':'';
StrDate:=''23/02/2011 12:34:56'';
dt:=StrToDateTime(StrDate,Fmt);
Usar VarToDateTime puede ser mucho más simple y simplemente funciona de manera inmediata:
uses Variants;
newDateTime := VarToDateTime(''23/02/2011 12:34:56'');