En términos generales, existen varias estructuras de datos que se utilizan para describir el tiempo en Delphi, y la operación del tiempo es esencialmente la operación de estas estructuras.
Tipo de fecha y hora:
El tipo de datos más utilizado que representa la fecha y la hora en Delphi es el tipo TDateTime. Al igual que un entero normal, puede definir una variable de fecha para que la fecha opere en el programa. El tipo TdateTime es esencialmente un número de tipo Doble. El tipo TdateTime se define en Delphi de esta manera: tipo TDateTime = tipo Doble El algoritmo específico es utilizar la parte entera del número Doble para representar la fecha, con el 30 de diciembre de 1989. el punto base suma y resta en días, por ejemplo, el número 1 representa el 1 de enero de 1900 y el número -1 representa el 29 de diciembre de 1989. La parte decimal se utiliza para expresar el tiempo y su valor es la relación entre el tiempo a expresar y el tiempo total de todo el día. Por ejemplo, las 6 de la mañana son 24/6 = 0,25, y 6: 15 de la mañana es (6*60+15)/ (24*60)=0.260416666666666666666666666667 A continuación, se dan varios ejemplos para ilustrar la interacción entre el tipo TDateTime y el tipo Doble.
0 30/12/1899 00:00:00
2.75 1/1/1900 18:00:00
-1.25 29/12/1899 6:00:00
35065 1/1/1996 00:00:00
Creo que todos pueden entender el método de conversión entre TdateTime y Double. Por lo tanto, el funcionamiento de TDateTime es fundamentalmente el mismo que el de Double.
Tipo de marca de tiempo:
Este es un tipo de estructura utilizado para describir la fecha y la hora. Se define así en Delphi:
escriba TTimeStamp = registrar Hora: Entero; {El número de milisegundos desde las 0:00 de la medianoche hasta la hora especificada} Fecha: Entero {El número de días desde hoy hasta la fecha especificada} fin;
En comparación con TDateTime, puede expresar el tiempo de alta precisión de manera más intuitiva y generalmente se usa para operaciones a nivel de milisegundos y para expresar tiempos más largos.
Tipo de tiempo del sistema:
Una estructura de puntero utilizada para operaciones de tiempo en WinApi. Su definición es:
escriba PSystemTime = ^TSystemTime; TSystemTime = registrar wAño: Palabra; wMes: Palabra; wMilisegundos: Palabra;
Esta estructura se utiliza principalmente al llamar a operaciones de WinApi.
Después de comprender la naturaleza de varios tipos de tiempo, creo que todos tienen un conjunto de ideas para manipular estos tipos de tiempo. Sin embargo, Delphi también proporciona un conjunto completo de funciones de proceso para manipular el tiempo. Estos procesos y funciones se definen en SysUnit. unidad, ahora les presentaré las funciones relevantes en Delphi:
Funciones para la manipulación del tiempo
Función de fecha:
Definición: Fecha: TDateTime;
Función: devolver la fecha actual
ejemplo:
FechaActual := Fecha;
Función DíaDeLa Semana:
Definición: función DíaDeLaSemana(Fecha: TDateTime): Entero;
Función: obtiene el valor del día de la semana de la fecha especificada y devuelve del 1 al 7, que representa de domingo a sábado.
Función IncMouth:
Definición: función IncMonth(fecha constante: TDateTime; NumberOfMonths: entero): TDateTime;
Función: Encuentre la fecha de la fecha dada Datos después de los meses de NumberOfMonths.
ejemplo:
Fecha1 := IncMes(fecha,10);
Si hoy es 2002-5-3, entonces la Fecha 1 es 2003-3-3
Función IsLeapYear:
Definición: función IsLeapYear(Año: Palabra): Booleana;
Función: Determinar si el año especificado es bisiesto;
ejemplo:
si esLeapYear(2000) entonces ShowMessage('Este año es bisiesto');
Ahora funciona:
Definición: función Ahora: TDateTime;
Función: Se utiliza para obtener la fecha y hora actuales.
ejemplo:
FechaActualHora:= Ahora;
Procedimiento de reemplazo de fecha
Definición: procedimiento ReemplazarDate(var DateTime: TDateTime; const NewDate: TDateTime);
Función: Utilice la parte de fecha del parámetro Newdate para reemplazar la parte de fecha del parámetro DateTime, pero no cambie la parte de hora.
Procedimiento de reemplazo de fecha
Definición: procedimiento ReemplazarTime(var DateTime: TDateTime; const NewTime: TDateTime);
Función: utilice la parte de hora del parámetro Newdate para reemplazar la parte de hora del parámetro DateTime, pero no cambie la parte de fecha.
Si los dos procesos anteriores se utilizan juntos, es equivalente a una asignación.
Función de tiempo:
Definición: función Hora: TDateTime;
Función: devolver la hora actual
ejemplo:
Hora actual := Hora;
Funciones de conversión entre varios tipos de tiempo
Función DateTimeToFileDate:
Definición: DateTimeToFileDate(DateTime: TDateTime): entero;
Función: convertir una hora del tipo TDateTime en una hora en el entorno Dos. El método de acceso a la hora en el entorno Dos es diferente del tipo TdateTime en VCL. Al realizar operaciones de archivos, para mantener la coherencia del tiempo, debe utilizar el. Función DateTimeToFileDate Después de la conversión, el valor entero devuelto es el valor utilizado para describir el tiempo en Dos.
Procedimiento DateTimeToSystemTime:
Definición: procedimiento DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
Función: convierte una hora de tipo TDateTime al tipo TSystemTime utilizado por la función Win API, que se utiliza cuando se utiliza la función WinApi para manipular la hora.
Función SystemTimeToDateTime:
Definición: función SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;
Función: Convertir un número de tipo TSysTemTime obtenido en la función WinApi en un tipo TDateTime.
Función DateTimeToTimeStamp:
Función TimeStampToDateTime:
Definición: DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
función TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
Función: Se utiliza para convertir entre el tipo TDataTime y TTimeStamp. TDataTime usa un doble para describir una hora, mientras que TTimeStamp usa dos números enteros para describir la hora respectivamente. La diferencia entre los dos tipos se puede encontrar en la sección de descripción del tipo de datos al principio del artículo.
Función codificar fecha:
Definición: función EncodeDate(Año, Mes, Día: Palabra): TDateTime;
Función: ingrese los valores de año, mes y día y devuelva la fecha como un tipo TDateTime. El rango de años es 1-9999, el rango de meses es 1-12 y el rango de fechas se basa en el mes actual. En esta situación, si el valor ingresado está fuera de rango, se generará un EConvertError.
Proceso de decodificación de fecha:
Definición: procedimiento DecodeDate(Fecha: TDateTime; var Año, Mes, Día: Palabra);
Función: ingrese una fecha de tipo TDateTime y conviértala en un valor de año, mes y día. Si el valor de entrada es 0 o menos que 0, entonces el año, mes y día son todos 0,
Función codificar tiempo:
Definición: EncodeTime (hora, minuto, segundo, MSec: Word): TDateTime;
Función: ingrese el valor de hora (Hour), minuto (min), segundo (Sec), microsegundo (MSec) y devuelva una hora de tipo TDateTime, que es un decimal entre 0 y 1. El rango de valores de Hora es 0-23, el rango de valores de Min es 0-59, el rango de valores de Sec es 0-59 y el rango de valores de MSec es 0-999. Si el valor de entrada excede el rango, se Se genera un error EConvertError.
Proceso de decodificación de tiempo:
Definición: procedimiento DecodeTime(Hora: TDateTime; var Hora, Min, Seg, MSec: Word);
Función: Ingrese una hora y conviértala en horas, minutos, segundos y microsegundos (MSec).
Función de conversión de tipo TDateTime y tipo de cadena:
Función DateTimeToStr:
Función DateToStr
Función TimeToStr
Definición: función DateTimeToStr(DateTime: TDateTime): cadena;
función TimeToStr(Hora: TDateTime): cadena;
función TimeToStr(Hora: TDateTime): cadena;
Función: convierte un número de tipo TDateTime en una cadena, DateTimeToStr convierte fecha y hora, DateToStr solo convierte fecha y TimeToStr solo convierte hora. El efecto de salida convertido es AAAA-MD H:M:S
Función StrToDateTime
Función StrToDate
Función StrToTime
Definición: función StrToDateTime(const S: cadena): TDateTime;
función StrToDate(const S: cadena): TDateTime;
función StrToTime(const S: cadena): TDateTime;
Función: convierte una cadena con formato de fecha y hora en TDateTime, donde S debe ser una cadena válida, como
Formato AA-MM-DD HH:MM:SS; de lo contrario, se activará el evento EConvertError y se mostrará un mensaje de error.
La cadena de la parte de tiempo debe estar compuesta de 2 a 3 cadenas numéricas y separadas por los caracteres delimitadores establecidos en la configuración regional de Windows. Los requisitos de formato deben cumplir con la configuración de la configuración regional de Windows, donde HH, MM (hora, minuto), SS (segundo) es opcional, también puede agregar Am y Pm al final para distinguir la mañana y la tarde. En este momento, el sistema pensará que se utiliza la representación de 12 horas, de lo contrario lo será. Se considera que se utiliza la representación de 24 horas.
Se requiere que el formato de la parte de fecha cumpla con el formato de fecha corta en la configuración regional de Windows, que también se compone de 2 a 3 cadenas numéricas. Si solo hay 2 números en la cadena, se considera que el mes y la fecha son. especificado y el año es el año actual.
Si la configuración regional utiliza una representación del año de dos dígitos, el sistema lo manejará de la siguiente manera:
Para el valor base del año inicial del año actual, ingrese el año 03. Ingrese el año 50. Ingrese el año 68.
1998 0 1900 1903 1950 1968
2002 0 2000 2003 2050 2068
1998 50 1948 2003 1950 1968
2000 50 1950 2003 1950 1968
2002 50 1952 2003 2050 1968
2020 50 1970 2003 2050 2068
2020 10 2010 2103 2050 2068
Primero, obtenga el año inicial del año de dos dígitos en la configuración regional. Por ejemplo, si el rango de años de dos dígitos se establece en 1932-2031 en la configuración regional, el año inicial es 32 años. 0, se considera años de dos dígitos. El año representa este siglo. Si el año es realmente mayor que 0, se utiliza el valor del año actual menos el año inicial. es mayor o igual a este valor, se considera que es este siglo, de lo contrario se considera que es el siglo siguiente. A continuación se dan algunos ejemplos:
Procedimiento DateTimeToString:
Función FormatDateTime:
Definición: procedimiento DateTimeToString(var Resultado: cadena; const Formato: cadena; DateTime: TDateTime);
función FormatDateTime(const Formato: cadena; DateTime: TDateTime): cadena;
Función: obtenga la cadena de hora que se generará definiendo el formato en la cadena Formato. Por ejemplo, si desea generar "Hoy es viernes 5 de mayo de 2002", puede utilizar estos dos métodos. función, pero una La cadena de salida se obtiene a través de variables compartidas El valor está en Resultado El otro es obtener la cadena de salida a través del valor de retorno. El parámetro DateTime es el valor de fecha que desea generar. bandera y una cadena adicional. La cadena adicional está rodeada por "", al igual que la función Printf en C. Por ejemplo, el valor de formato de "Hoy es viernes 5 de mayo de 2002" es '" Hoy es "aaaa" año "mm" mes "dd" día", dddd', yyyy, mm, dd, dddd son todos identificadores de formato. Las explicaciones de varios identificadores de formato son las siguientes:
d: Utilice uno o dos números enteros para mostrar el día (1-31)
dd: use dos números enteros para mostrar el día y use 0 para compensar menos de dos dígitos (01-31)
ddd: muestra el número de la semana actual en forma abreviada. Si es una versión en inglés, se mostrará como lunes a domingo. Si es una versión en chino, se mostrará como dddd.
dddd: muestra el número de la semana actual en formato completo. Si es una versión en inglés, se mostrará Monday-SumDay. Si es una versión china, se mostrará de lunes a domingo.
ddddd: salida en formato de fecha corta en la configuración regional.
dddddd: salida en formato de fecha larga en la configuración regional.
m: utilice uno o dos números enteros para mostrar el mes (1-12)
mm: use dos números enteros para mostrar el mes. Si hay menos de dos dígitos, use 0 para compensar (01-12).
mmm: utilice abreviaturas para mostrar el nombre del mes. La versión en inglés se muestra como enero-diciembre y la versión china es la misma que mmmm.
mmmm: utilice el método completo para mostrar el nombre del mes. La versión en inglés muestra de enero a diciembre y la versión en chino muestra de enero a diciembre.
yy: muestra el año como un número entero de dos dígitos (00-99)
yyyy: muestra el año como un número entero de cuatro dígitos (0000-9999)
h: utilice uno o dos números enteros para mostrar la hora (0-23)
hh: use dos números enteros para mostrar la hora. Si hay menos de dos dígitos, use 0 para compensar (00-23).
n: utilice uno o dos números enteros para mostrar los minutos (0-60)
nn: use dos números enteros para mostrar los minutos y use 0 para compensar menos de dos dígitos (00-60)
s: use uno o dos números enteros para mostrar segundos (0-60)
ss: use dos números enteros para mostrar segundos y use 0 para compensar menos de dos dígitos (00-60)
z: muestra milisegundos con uno o dos números enteros (0-999)
zzz: use números enteros de tres dígitos para mostrar milisegundos. Si hay menos de tres dígitos, use 0 para compensar (000-999).
tt: Muestra la fecha en el formato local.
am/pm: se utiliza para la visualización de 12 horas, donde AM representa de 0 a 12 en punto y pm de 12 a 0 en punto.
Variables relacionadas con el tiempo:
Delphi encapsula diversa información sobre la configuración local y define una serie de variables. Aquí hay algunas variables relacionadas con el tiempo:
Separador de fecha: Carácter
Separador de fecha, utilizado para separar año, mes y día.
Separador de tiempo: Carácter
Separador de tiempo utilizado para separar horas, minutos y segundos.
Formato de fecha corta: cadena
Definición de formato de fecha corta en la localidad.
Formato de fecha larga: cadena
Definición de formato de fecha larga en la localidad.
Formato de tiempo corto: cadena
Definición de formato de tiempo corto en la localidad.
Formato de tiempo largo: cadena
Definición de formato largo en local.
HoraAMString: Cadena
Una cuerda utilizada para representar la mañana.
TimePMString: Cadena
Una cuerda utilizada para representar la tarde.
ShortMonthNames: matriz [1..12] de cadena;
La matriz utilizada para abreviar el nombre del mes es la cadena identificada por mmm que se muestra cuando se usa FormatDateTime.
LongMonthNames: matriz [1..12] de cadena;
La matriz utilizada para representar completamente el nombre del mes es la cadena identificada por mmmm que se muestra cuando se usa FormatDateTime.
ShortDayNames: matriz [1..7] de cadena;
La matriz utilizada para abreviar el nombre del día de la semana es la cadena identificada por ddd que se muestra cuando se usa FormatDateTime.
LongDayNames: matriz [1..7] de cadena;
La matriz utilizada para representar completamente el nombre de la semana es la cadena identificada por ddd que se muestra cuando se usa FormatDateTime
TwoDigitYearCenturyWindow:Palabra = 50;
El año inicial cuando se utiliza un año de dos dígitos.
Bien, ahora la parte sobre las operaciones de tiempo en Delphi está básicamente terminada. Los lectores también pueden consultar los archivos de ayuda correspondientes según sus propias necesidades para resolver los problemas que encuentran al usar la programación real.