De modo geral, existem várias estruturas de dados usadas para descrever o tempo no Delphi, e a operação do tempo é essencialmente a operação dessas estruturas.
Tipo TDataTime:
O tipo de dados mais comumente usado para representar data e hora no Delphi é o tipo TDateTime. Assim como um número inteiro comum, você pode definir uma variável de data para que a data opere no programa. O tipo TdateTime é essencialmente um número do tipo Double. O tipo TdateTime é definido no Delphi assim: type TDateTime = type Double. O algoritmo específico é usar a parte inteira do número Double para representar a data, com 30 de dezembro de 1989. o ponto base. Adicione e subtraia em dias, por exemplo, o número 1 representa 1º de janeiro de 1900 e o número -1 representa 29 de dezembro de 1989. A parte decimal é usada para expressar a hora e seu valor é a razão entre a hora a ser expressa e a hora total do dia inteiro. Por exemplo, 6 horas da manhã é 24/06 = 0,25 e 6: 15 da manhã é (6*60+15)/ (24*60)=0,260416666666666666666666666667 Abaixo, vários exemplos são fornecidos para ilustrar a interação entre o tipo TDateTime e o tipo Double.
0 30/12/1899 00:00:00
2,75 01/01/1900 18:00:00
-1,25 29/12/1899 6:00:00
35065 01/01/1996 00:00:00
Acredito que todos possam entender o método de conversão entre TdateTime e Double. Portanto, o funcionamento do TDateTime é fundamentalmente igual ao do Double.
Tipo TTimeStamp:
Este é um tipo de estrutura usado para descrever data e hora. É definido assim no Delphi:
type TTimeStamp = record Time: Integer {O número de milissegundos desde 0h00 até a hora especificada} Data: Integer {O número de dias de hoje até a data especificada} end;
Comparado com TDateTime, ele pode expressar tempo de alta precisão de forma mais intuitiva e geralmente é usado para operações em nível de milissegundos e para expressar tempos mais longos.
Tipo PsystemTime:
Uma estrutura de ponteiro usada para operações de tempo no WinApi. Sua definição é:
tipo PSystemTime = ^TSystemTime = registro wYear: Word; wDayOfWeek: Word;
Essa estrutura é usada principalmente ao chamar operações WinApi.
Depois de compreender a natureza dos vários tipos de tempo, acredito que todos tenham um conjunto de ideias para manipular esses tipos de tempo. No entanto, o Delphi também fornece um conjunto completo de funções de processo para manipular o tempo. unidade, vou agora apresentar a você as funções relevantes no Delphi:
Funções para manipulação de tempo
Função de data:
Definição: Data: TDateTime;
Função: Retorna a data atual
exemplo:
DataAtual := Data;
Função DayOfWeek:
Definição: função DayOfWeek(Data: TDateTime): Inteiro;
Função: obtém o valor do dia da semana da data especificada e retorna de 1 a 7, representando domingo a sábado.
Função IncMouth:
Definição: função IncMonth(const Data: TDateTime; NumberOfMonths: Integer): TDateTime;
Função: Encontre a data dos dados fornecidos após os meses NumberOfMonths.
exemplo:
Data1 := IncMês(data,10);
Se hoje for 2002-5-3, então a Data1 será 2003-3-3
Função IsLeapYear:
Definição: função IsLeapYear(Ano: Palavra): Boolean;
Função: Determinar se o ano especificado é bissexto;
exemplo:
if isLeapYear(2000) then ShowMessage('Este ano é um ano bissexto');
Agora função:
Definição: função Agora: TDateTime;
Função: Usada para obter a data e hora atuais
exemplo:
CurrentDateTime := Agora;
Procedimento SubstituirData
Definição: procedimento ReplaceDate(var DateTime: TDateTime; const NewDate: TDateTime);
Função: Utilize a parte da data do parâmetro Newdate para substituir a parte da data do parâmetro DateTime, mas não altere a parte da hora.
Procedimento SubstituirData
Definição: procedimento ReplaceTime(var DateTime: TDateTime; const NewTime: TDateTime);
Função: Utilize a parte horária do parâmetro Newdate para substituir a parte horária do parâmetro DateTime, mas não altere a parte data.
Se os dois processos acima forem usados juntos, isso equivale à atribuição.
Função de tempo:
Definição: função Tempo: TDateTime;
Função: Retorna a hora atual
exemplo:
Hora Atual := Hora;
Funções de conversão entre vários tipos de horário
Função DateTimeToFileDate:
Definição: DateTimeToFileDate(DateTime: TDateTime): Inteiro;
Função: Converter uma hora do tipo TDateTime em hora no ambiente Dos O método de acesso à hora no ambiente Dos é diferente do tipo TdateTime na VCL. Função DateTimeToFileDate Após a conversão, o valor Inteiro retornado é o valor usado para descrever o tempo em Dos.
Procedimento DateTimeToSystemTime:
Definição: procedimento DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
Função: Converte um tempo do tipo TDateTime para o tipo TSystemTime usado pela função Win API, que é usada ao usar a função WinApi para manipular o tempo.
Função SystemTimeToDateTime:
Definição: função SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;
Função: Converte um número do tipo TSysTemTime obtido na função WinApi em um tipo TDateTime.
Função DateTimeToTimeStamp:
Função TimeStampToDateTime:
Definição: DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
função TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
Função: Utilizada para converter entre o tipo TDataTime e TTimeStamp. TDataTime usa um double para descrever um tempo, enquanto TTimeStamp usa dois inteiros para descrever o tempo, respectivamente. A diferença entre os dois tipos pode ser encontrada na seção de descrição do tipo de dados no início do artigo.
Função EncodeDate:
Definição: função EncodeDate(Ano, Mês, Dia: Palavra): TDateTime;
Função: insira os valores de ano, mês e dia e retorne a data como um tipo TDateTime. O intervalo de anos é de 1 a 9999, o intervalo de meses é de 1 a 12 e o intervalo de datas é baseado no mês atual. Nessa situação, se o valor inserido estiver fora do intervalo, um EConvertError será gerado.
Processo de decodificação:
Definição: procedimento DecodeDate(Data: TDateTime; var Ano, Mês, Dia: Palavra);
Função: Insira uma data do tipo TDateTime e converta-a em valor de ano, mês e dia. Se o valor de entrada for 0 ou menor que 0, então o ano, mês e dia serão todos 0,
Função EncodeTime:
Definição: EncodeTime(Hora, Min, Seg, MSec: Word): TDateTime;
Função: Insira o valor de hora (Hour), minuto (min), segundo (Sec), microssegundo (MSec), e retorne um horário do tipo TDateTime, que é um decimal entre 0 e 1. O intervalo de valores de Hora é 0-23, o intervalo de valores de Min é 0-59, o intervalo de valores de Sec é 0-59 e o intervalo de valores de MSec é 0-999. EConvertError é gerado por erro.
Processo DecodeTime:
Definição: procedimento DecodeTime(Tempo: TDateTime; var Hora, Min, Sec, MSec: Word);
Função: Insira um horário e converta-o em horas, minutos, segundos e microssegundos (MSec).
Função de conversão de tipo TDateTime e tipo string:
Função DateTimeToStr:
Função DateToStr
Função TimeToStr
Definição: função DateTimeToStr(DateTime: TDateTime): string;
função TimeToStr(Hora: TDateTime): string;
função TimeToStr(Hora: TDateTime): string;
Função: Converte um número do tipo TDateTime em uma string, DateTimeToStr converte data e hora, DateToStr converte apenas data e TimeToStr converte apenas hora. O efeito de saída convertido é AAAA-MD H:M:S
Função StrToDateTime
Função StrToDate
Função StrToTime
Definição: função StrToDateTime(const S: string): TDateTime;
função StrToDate(const S: string): TDateTime;
função StrToTime (const S: string): TDateTime;
Função: Converte uma string com formato de data e hora em TDateTime, onde S deve ser uma string válida, como
AA-MM-DD HH:MM:SS, caso contrário o evento EConvertError será acionado e uma mensagem de erro será exibida.
A sequência da parte horária deve ser composta por 2 a 3 sequências numéricas, e separadas pelos caracteres delimitadores definidos nas configurações regionais do Windows. Os requisitos de formato devem estar de acordo com as configurações nas configurações regionais do Windows, onde HH, MM (hora,). minuto) deve ser adicionado, SS (segundo) é opcional, você também pode adicionar Am e Pm no final para distinguir manhã e tarde. Neste horário, o sistema pensará que se utiliza a representação de 12 horas, caso contrário será. considera-se que é utilizada a representação de 24 horas.
O formato da parte da data deve estar em conformidade com o formato de data abreviada nas configurações regionais do Windows, que também é composto por 2 a 3 sequências numéricas. Se houver apenas 2 números na sequência, considera-se que o mês e a data são. especificado, e o ano é o ano atual,
Se a localidade usar uma representação de ano de dois dígitos, o sistema tratará isso da seguinte maneira:
Para o valor base do ano inicial do ano atual, insira o ano 03. Insira o ano 50. Insira o ano 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
Primeiro, obtenha o ano inicial do ano de dois dígitos nas configurações regionais. Por exemplo, se o intervalo de anos de dois dígitos for definido como 1932-2031 nas configurações regionais, o ano inicial será 32 anos. 0, são considerados anos de dois dígitos. O ano representa este século. Se o ano for realmente maior que 0, o valor do ano atual menos o ano inicial será usado. for maior ou igual a este valor, considera-se que é deste século, caso contrário, é considerado que é o próximo século. Dê alguns exemplos:
Procedimento DateTimeToString:
Função FormatDateTime:
Definição: procedimento DateTimeToString (var Resultado: string; const Formato: string; DateTime: TDateTime);
função FormatDateTime (formato const: string; DateTime: TDateTime): string;
Função: Obtenha a string de hora a ser gerada definindo o formato na string Formato. Por exemplo, se você deseja gerar "Hoje é sexta-feira, 5 de maio de 2002", você pode usar esses dois métodos. função, mas uma A string de saída é obtida por meio de variáveis compartilhadas O outro é obter a string de saída por meio do valor de retorno O parâmetro DateTime é o valor da data que você deseja gerar. flag e uma string adicional. A string adicional é cercada por "", assim como a função Printf em C. Por exemplo, o valor de formato de "Hoje é sexta-feira, 5 de maio de 2002" é '" Hoje é "aaaa" ano "mm" mês "dd" dia, "dddd', yyyy, mm, dd, dddd são todos identificadores de formato. As explicações de vários identificadores de formato são as seguintes:
d: Use um ou dois números inteiros para exibir o dia (1-31)
dd: Use dois números inteiros para exibir o dia e use 0 para compensar menos de dois dígitos (01-31)
ddd: Exibe o número da semana atual em formato abreviado. Se o Windows for uma versão em inglês, será exibido como Seg-Dom. Se for uma versão em chinês, será exibido como dddd.
dddd: Exibe o número da semana atual em formato completo. Se o Windows for uma versão em inglês, será exibido Monday-SumDay. Se for uma versão em chinês, será exibido Monday-Sunday.
ddddd : Saída no formato de data abreviada no código do idioma.
dddddd : Saída no formato de data longa no código do idioma.
m: Use um ou dois números inteiros para exibir o mês (1-12)
mm: Use dois números inteiros para exibir o mês. Se houver menos de dois dígitos, use 0 para compensar (01-12).
mmm: Use abreviatura para exibir o nome do mês. A versão em inglês é exibida como Jan-Dec e a versão em chinês é igual a mmmm.
mmmm: Use o método completo para exibir o nome do mês. A versão em inglês exibe janeiro a dezembro e a versão chinesa exibe janeiro a dezembro.
aa: exibe o ano como um número inteiro de dois dígitos (00-99)
aaaa: exibe o ano como um número inteiro de quatro dígitos (0000-9999)
h: Use um ou dois números inteiros para exibir a hora (0-23)
hh: Use dois números inteiros para exibir a hora. Se houver menos de dois dígitos, use 0 para compensar (00-23).
n: Use um ou dois números inteiros para exibir os minutos (0-60)
nn: Use dois números inteiros para exibir os minutos e use 0 para compensar menos de dois dígitos (00-60)
s: Use um ou dois números inteiros para exibir segundos (0-60)
ss: Use dois números inteiros para exibir os segundos e use 0 para compensar menos de dois dígitos (00-60)
z: Exibe milissegundos com um a dois números inteiros (0-999)
zzz: Use números inteiros de três dígitos para exibir milissegundos. Se houver menos de três dígitos, use 0 para compensar (000-999).
tt: Exibe a data no formato da localidade
am/pm: usado para exibição de 12 horas, com AM representando de 0 a 12 horas e pm representando de 12 a 0 horas.
Variáveis relacionadas ao tempo:
Delphi encapsula diversas informações sobre configurações locais e define uma série de variáveis. Aqui estão algumas variáveis relacionadas ao tempo:
Separador de data:Char
Separador de data, usado para separar ano, mês e dia
Separador de tempo:Char
Separador de tempo usado para separar horas, minutos, segundos
ShortDateFormat: String
Definição do formato de data abreviada no local.
LongDateFormat: String
Definição de formato de data longa no local.
ShortTimeFormat: String
Definição do formato de tempo curto no local.
LongTimeFormat: String
Definição de formato longo na localidade.
TimeAMString: String
Uma string usada para representar a manhã
TimePMString: String
Uma string usada para representar a tarde
ShortMonthNames: array[1..12] de String;
A matriz usada para abreviar o nome do mês é a string identificada por mmm exibida ao usar FormatDateTime.
LongMonthNames: array[1..12] de String;
A matriz usada para representar completamente o nome do mês é a string identificada por mmmm exibida ao usar FormatDateTime.
ShortDayNames: array[1..7] de String;
A matriz usada para abreviar o nome do dia da semana é a string identificada por ddd exibida ao usar FormatDateTime.
LongDayNames: array[1..7] de String;
A matriz usada para representar completamente o nome da semana é a string identificada por ddd exibida ao usar FormatDateTime
JanelaDoisDígitosAnoCentury:Palavra = 50;
O ano inicial ao usar um ano de dois dígitos.
Ok, agora a parte sobre as operações de tempo no Delphi está basicamente concluída. Os leitores também podem verificar os arquivos de ajuda correspondentes de acordo com suas próprias necessidades para resolver os problemas que encontram ao usar a programação real.