variable validar una tipo sistema obtener hora funciones fechas fecha extraer entre diferencia decodedate declarar año delphi

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'');