O XK-Time é uma ferramenta para conversão de tempo, cálculo de tempo, formatação de tempo, análise de tempo, calendário, expressão do tempo e NLP de tempo, etc. Ele usa Java8, seguro de linha, fácil de usar e mais de 70 modelos de formatação de data comuns, suportar Java8 Classe e data de tempo, peso leve, sem terceira parte.
<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xk-time</artifactId>
<version>3.2.4</version>
</dependency>
Mini版本不包含 time nlp 功能,更简洁。
<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xk-time</artifactId>
<version>3.2.4.Mini</version>
</dependency>
compile group: 'com.github.xkzhangsan', name: 'xk-time', version: '3.2.4'
O XK-Time Toolkit usa a API Java8, entre os quais instantâneos, LocalDate, LocalDeTime, LocalTime, ZonedDateTime, etc. são todas as classes seguras de threads e métodos mais ricos foram adicionados. Nesta base, as classes de ferramentas relacionadas são desenvolvidas para torná-las mais seguras, tornando-as mais convenientes de usar.
Kit de ferramentas XK-TIME, as funções acima são divididas em 3 classes de ferramentas de acordo com a conversão de tempo, o cálculo do tempo e a formatação e análise de tempo: DATETIMECONVERTERUTIL, DATETIMECALCULLATILLETIL e DATETIMEFORMATTERUTILTIL. Cada classe possui apenas uma função para facilitar o uso.
2.4.1 A implementação dos pacotes de tempo Joda-Time e Java8 é basicamente a mesma, ambos dominados por Stephen Colebourne. A partir do Java8, é recomendável usar o pacote Java8 Time para substituir o Joda-Time.
2.4.2 O XK-Time é baseado na API Java 8 Data e é uma ferramenta suplementar, semelhante à DateUtil anterior.
(1) A biblioteca de classes Java8 é implementada verticalmente em um nível hierárquico, enquanto o tempo XK é dividido em 3 classes de acordo com funções gerais, como conversão, cálculo, formatação e análise.
(2) A data do Java8 é convertida em uma nova classe e você precisa visualizar a documentação da API e o tempo XK é convertido internamente, para que a data possa usar diretamente os novos recursos do Java8.
(3) Reimplementos de tempo XK as funções comumente usadas de DateUtil de acordo com a API Java 8 e, ao mesmo tempo, são feitas algumas extensões para tornar o uso mais conveniente.
Incluir:
(1) Data, LocalDate, LocalDeTime, Localtime, Instant, ZonedDateTime, YearMonth, Timestamp, Timestamp e TemperalAccessor são convertidos um ao outro.
(2) Unidades de tempo, como dias, horas, minutos, segundos e milissegundos, são convertidos um ao outro, apoiando a conversão precisa de unidades pequenas em unidades grandes. Por exemplo, MinutetoHourprecise (Long Num) 90 minutos a horas, o que é de 1,5 horas.
(3) Converta o ZonedDateTime enquanto suporta a conversão em um fuso horário especificado, como ToZONEDDATETIME (data, String ZoneId) e ToZONONEDDATETIMEADTRANSFormZona (LocalDateTime LocalDateTime, String TargetZoneId).
Observe que, para conversões relacionadas ao ZonedDateTime, especialmente para outras conversões de tempo para o ZonedDateTime, você deve prestar atenção à consistência do tempo e ao fuso horário correspondente.
Para uso detalhado, você pode visualizar o código de teste relevante: DATETIMECONVERTERTERTILTILLEST.
incluir:
(1) Obtenha o método de atributo de hora (suporta ano, mês, hora, minuto, milissegundo, semana, carimbo de hora, etc.), obtenha*, por exemplo, getyear (data) recebe a parte do ano, getmonthcnlong (data) obtém o mês em chinês, getdayofweekcn (data), obtenha a semana da semana chinesa.
(2) Obtenha o método de operação do tempo mais, além de* por exemplo, além de anos (data de data, valor longo) aumentar o valor do valor no tempo atual.
(3) Obtenha o método de operação de precisão de tempo, menos* por exemplo, menos anos (data de data, valores longos), o ano atual diminui o valor do valor.
(4) Obtenha o método de atributo de modificação de tempo, com* por exemplo, sem ano (data de data, long newValue) para modificar o valor atual de horário e ano em NewValue.
(5) Obtenha 2 vezes a comparação, entre*, por exemplo, entre o BetweEntoDalDays (data startinclusive, data endexclusiva) compare 2 vezes para retornar o número total de dias.
(6) Outros métodos comuns, como Isleapyear (data de data) para determinar se é um ano bissexto, IsWeekEND (data) para determinar se é um fim de semana, isexpiry (string yearmonthstr) para expirar, etc.
(7) Método de cálculo de conversão do fuso horário, Transform*, como transformar (ZonedDateTime ZonedDateTime, String ZoneId)
(8) Compare 2 vezes e métodos de igualdade, compare*, como comparar (data de data1, data de data2)
(9) Obtenha o método exato da hora de início, Iniciar*, End*, como StartTimeOfMonth () Hora de início do mês Data do primeiro dia +00: 00: 00, EndTimeOfmonth () Data do último dia +23: 59: 59 Precisa aos segundos; EndaccuracyTimeof*, preciso para milissegundos (data), preciso para nanossegundos (LocalDeTime).
(10) Métodos para comparar e julgar o mesmo mês e dia, Issememonthday*, entrenextsamemonthday*, NextSameMonthday*, por exemplo, para julgamentos periódicos de comparação de data, como aniversários, festivais, etc.
(11) Método de cálculo da constelação, GetConsTellation*, como GetConsTellationLationNeCn (String MonthDaystr), calcula as constelações com base na data.
(12) Calcule a lista de tempo do intervalo de ano e mês especificado ou de início, obtenha*lista*, como GetDatelist (Ano Int Ano, Int Month), calcula a lista de tempo do ano e mês especificados.
(13) Método para reduzir a precisão do tempo, ReduceAccuracyto*, como ReduceAccuracyToday (data), reduza a precisão do tempo aos dias e adicione 0 a outros métodos, retorne, por exemplo, 2020-04-23 00:00:00.
(14) Obtenha o método de registro de data e hora, getEpoch*, por exemplo, getepochmilli () recebe o registro de data e hora, getepochmilliformat () recebe a sequência de formato de data e hora (aaaa-mm-dd hh: mm: ss)
(15) Método de cálculo da idade, Getage*, como Getage (data de aniversário), calcula a idade por aniversário.
(16) Método para determinar se o aniversário está aqui, Isbirthday*, por exemplo, ISBirthday (data de aniversário), determine se a data atual está aqui com base no aniversário.
(17) Como calcular o número de semanas, semana*, como a semana do ponto (data), que semana do mês a data é.
(18) Determine se o método de segunda e sexta -feira, IsMonday*, Iszhouyi*, como Iszhouyi (data), Ismonday.
(19) O método de cálculo de doze horas, Gettwelvetwo*, como Gettwelvetwo (data), obtenha as doze horas correspondentes ao tempo especificado.
(20) Método de cálculo trimestral, getQuarter*, como getQuarter (data de data), obtenha o trimestre correspondente ao horário especificado.
(21) Obtenha o método de tempo de partida preciso para o trimestre (quatro trimestres), o tempo de início*trimestre, como o início do início do ano (int ano), obtenha o primeiro trimestre do ano especificado.
(22) Obtenha o método preciso do tempo de início do ano, o StartTimeOfyear, como o StartTimeOfyear (INT ano), obtenha a hora de início do ano especificado.
(23) Tempo comumente usado (amanhã, na próxima semana, no próximo mês, no próximo ano, etc.) métodos de cálculo, como amanhã (), calcule amanhã e data de retorno.
(24) Modifique o método do valor da semana com o diaofreto*, como o WithdayofWeek (data de data, o novo Valor), modifique a semana para o valor especificado NewValue e a data de retorno.
(25) Cálculo do dia de trabalho chinês (incluindo informações de férias), incluindo métodos como determinar se a data atual é um dia útil e o próximo dia útil, ischineseworkday*, nextchineseworkday*,
Por exemplo, ischineseworkday (data, string holidaData), nextChineseworkday (data de data, string holidaydata),
Dados de férias, se os dados de férias não suportarem o ano, serão julgados de segunda a sexta -feira como dias úteis. Abaixo está as informações de férias que compilei para 2021:
2021-01-01: 0,2021-02-07: 1.2021-02-11: 0,2021-02-12: 0,2021-02-15: 0,2021-02-16: 0,202 1-02-17: 0,2021-02-20: 1.2021-04-05: 0,2021-04-25: 1.2021-05-03: 0,2021-05-04: 0,2021-0 5-05: 0,2021-05-08: 1.2021-06-14: 0,2021-09-18: 1.2021-09-20: 0,2021-09-21: 0,2021-09-2 6: 1.2021-10-01: 0,2021-10-04: 0,2021-10-05: 0,2021-10-06: 0,2021-10-07: 0,2021-10-09: 1
(26) Determine se existe um método de sobreposição (interseção) por 2 ou mais períodos de tempo, isoverlap*, como o isoverlap (data startDate1, data enddate1, data startdate2, data enddate2), sobreposição retorna true.
(27) Método para calcular o tempo médio, averageTime*, como o AverageTime (lista de dados da lista), retorna o tempo médio, como "15:03:03".
(28) Calcule o método da contagem regressiva com base no valor de milissegundos, suporta os objetos de tempo de entrada e os formatos especificados, contagem regressiva*, como contagem regressiva (millis longa), e retorna a contagem regressiva, como "27 horas, 10 minutos, 30 segundos".
(29) Obtenha o método da lista de tempo de formatação para o intervalo especificado, como getDateFormatList (Data inicial, final de data, string dateformatpattern) suporta a passagem nos modelos de formatação.
(30) Calcule o método de tempo de sobreposição (interseção) de 2 períodos de tempo, como o Sobrepime (Data StartDate1, Data ENDDATE1, DATE STARTDATE2, DATE ENDDATE2) e retorna o valor milissegundo.
Para uso detalhado, você pode visualizar o código de teste relevante: DATETIMECALCULatorTilTIlTest.
Contém formatos de data comum, como:
AAAA-MM-DD
HH: MM: SS
AAA AA AYYY-MM-DD HH: MM: SS
AAA AA AYYY-MM-DD HH: MM: SS.SSS
AAA AA AYYY-MM-DD HH: MM: SS.SSSSSSSS
AAA AA AYYY-MM-DD HH: MM: SS.SSSSSSSSSSSS
AAA AA AA AA AA AAÇÃO MM-DD'T'HH: MM: SSZ, etc., suporta tempos precisos, como milissegundos, microssegundos e nanossegundos.
(1) Método de formato, formato*, como formattodateSTST (data de data), retorna a parte da data, como: yyyy-mm-dd;
Format (data de data, formatador DatETimeFormatter) Você pode selecionar um formatador definido, como aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
(2) método analítico, parse*, como parsedatestrtodate (texto da string) analisar a data aaaaaa-dd, data de retorno;
Parsetodate (texto da string, DateTimeFormatter Formatter) Analise até o momento de acordo com o formatador.
(3) Método de análise automática, reconhece e analisam automaticamente de acordo com as características da string, SmartParse*, como o SmartParSetodate (texto da String) analisa automaticamente a data.
(4) O método de análise automático para formato ISO (incluindo T) é reconhecido e analisado automaticamente de acordo com as características da sequência. Parseiso*, como parseisotodato (texto da string), analisa automaticamente a data.
(5) Analisando o método de timestamp, parseepochmilli*, como parseepocmilitodato (texto da string), o timestamp de análise é data, como 1590224790000.
(6) Analise o formato padrão da data, parsedatefaultstr*, como parsedatefaultstrtodate (texto da string)
Analise o EEE MMM DD HH: MM: SS ZZZ AYYY, por exemplo: Sáb 23 de maio 17:06:30 CST 2020 é data.
(7) Métodos de formatação de fuso horário personalizado, como formato (data de data, formatador DatETimeFormatter, string zoneId), data de formato de acordo com o ZoneID.
(8) Personalize o método de formatação do modelo, como formato (data de data, string dateFormatPattern), Data de formato de acordo com o DateFormatPattern.
(9) Métodos de análise de modelos personalizados, como parsetodato (texto da string, string dateformatpattern), data de formato de acordo com o DateFormatPattern.
(10) Formato padrão do timestamp (AAA YYYY-MM-DD HH: MM: Ss.ffffffffffff Where Fffffff Nanossegundos, omitir o método de formatação do seguinte 0).
Por exemplo, formattimestampyle (data).
(11) Formato padrão do timestamp (AAAA-MM-DD HH: MM: SS.FFFFFFFFFFFF, onde o FFFFFFF é nanossegundos, omitindo o seguinte).
Por exemplo, parsetimestampStyLetodate (texto da string).
(12) Métodos para verificar se o formato da data está correto, isValiddate*, como o ISValiddate (texto da string), verifique se a sequência de formato AAAA-MM-DD está correta.
(13) De acordo com o método de análise de matriz de modelo personalizado, como parsetodato (texto da string, string [] dateFormatPatterns), o DateForMatatPatterns suporta vários modelos e, desde que uma das analisadas seja bem -sucedida, a data correspondente será retornada.
(14) Analise o horário da linguagem natural, hoje, amanhã, na próxima semana, no próximo mês, no próximo ano, ontem, na semana passada, no mês passado, no ano passado, etc., como ParsenaturalanguageTodate (String Text),
ParsenaturallaguageTodate (texto da string, mapa <string, string> naturallanguageMap) suporta mapas de tempo de linguagem natural personalizados.
(15) Métodos de formatação de data chinesa, como formatochinesedateSTest (data de data, isuppercase booleana), isuppercase falsa: 11 de setembro de 2021 Verdadeiro: 11 de setembro de 2021.
(16) Métodos de análise de data chinesa, como parsechinesedateStodate (texto da string), suporte: 11 de setembro de 2021 e 11 de setembro de 2021 Análise de data de formato.
NOTA: Ao formatar e analisar momentos diferentes do fuso horário do sistema, use um método de formatação de fuso horário personalizado ou você pode usar o método WithZone para redefinir o fuso horário, como:
Yyyy_mm_dd_hh_mm_ss_sss_fmt.withzone (zoneid.of ("Europa/Paris").
Para uso detalhado, você pode visualizar o código de teste relevante: DATETIMEFORMATTERITILTILTEST.
incluir:
(1) Gere um calendário para o tempo especificado (calendário que contém a hierarquia do ano, mês e dia). Generatecalendar* Por exemplo, o generatecalendar (ano int, mês int) gera um calendário para o ano e o mês especificados.
(2) Gere um calendário do tempo especificado (calendário que contém a hierarquia do ano, mês e dia), incluindo o calendário lunar e todos os métodos de informação de férias, generatecalendarwithholiday*, generateCalendarwithholiday (Int Year, Int Mês, mapa <string> stringMapAp, mapa <string> string> Calendário do ano e mês especificados, incluindo o calendário lunar e todas as informações de férias, e pode personalizar férias e dias úteis, etc.
Para uso detalhado, você pode visualizar o código de teste relevante: CalendarutilTest.
Incluir:
(1) Cálculo da data lunar, ano, mês e dia.
(2) Calcule os sinais do zodíaco durante o calendário lunar.
(3) Cálculo dos vinte e quatro termos solares, etc. (4) Notas sobre o calendário lunar no calendário gregoriano: apenas a conversão do calendário lunar no calendário gregoriano de 1900-2100 é apoiado.
Para uso detalhado, você pode visualizar o código de teste relevante: LUNDATETEST.
Incluir:
(1) Calcule as férias gregorianas, GetLocalholiday*, por exemplo, o GetLocalholiday (data) calcula os feriados gregorianos da data, GetLocalholiday (data, mapa <string, string> localholidaymap) pode passar em dados de férias gregorianas personalizadas.
(2) O cálculo dos feriados lunares, GetChineseholiday*, por exemplo, GetChineseholiday (data) calcula o feriado lunar de data, GetChineseholiday (data da data, mapa <string, string> ChineseholidayMap) pode passar nos dados de férias lunares personalizados.
(3) O cálculo dos vinte e quatro termos solares, getSolarTerm*, por exemplo, o getSolarTerm (data) calcula os vinte e quatro termos solares da data.
NOTA: O Lunardate é usado no calendário lunar e nos vinte e quatro termos solares, e só suporta os cálculos dos anos 1900-2100 do calendário gregoriano.
Você pode visualizar os códigos de teste relevantes para uso detalhado.
Expressão do cron da esquerda para a direita (separada por espaços): segundos (0-59) minutos (0-59) horas (0-23) Data (1-31) mês (número inteiro de 1-12 ou janeiro-dezembro) (Inteiro de 1-7 ou Sol-SAT (1 = Sun)) (opcional, 1970-209)
Caracteres especiais podem ser usados para todos os campos:, - * / são enumeração, alcance, datas arbitrárias, intervalos e outros:? LW é qualquer dia de trabalho válido e válido (de segunda a sexta)
Você também pode usar a semana:? L # é qualquer um e, finalmente, a expressão de Cron é comumente usada na semana de cada mês:
(1) 0 0 2 1 *? * Indica o disparo às 2 da manhã no 1º do mês (2) 0 15 10? * Seg-Fri indica que a tarefa é realizada às 10h15 de segunda a sexta-feira (3) 0 15 10? * 6L 2002-2006 indica que a tarefa é realizada às 10h15 na última sexta-feira de cada mês de 2002-2006 (4) 0 0/30 9-17 * *? Indica cada meia hora (5) 0 15 10 l *? Indica o disparo às 10:15 no último dia de cada mês (6) 0 15 10? * 6#3 indica o disparo às 10:15 na terceira sexta -feira de cada mês (6) 0 15 10? * 6#3 indica o disparo às 10:15 na terceira sexta-feira de cada mês (4) 0 0/30 9-17 * *? Indica cada meia hora (5) 0 15 10 l *? Indica o disparo às 10:15 no último dia de cada mês (6) 0 15 10? * 6#3 indica o disparo às 10:15 na terceira sexta -feira de cada mês (6) 0 15 10? * 6#3 indica o disparo às 10:15 na terceira sexta -feira de cada mês (6) 0 15 10? *
Contém (1) Validação e formatação de métodos de expressão de Cron, ISValidexpressão e formatexpressão.
(2) Gere os próximos ou mais métodos de tempo de execução, GetNextTime e GetNextTimelist.
(3) Gere o método da formatação da data (AAAA-MM-DD HH: MM: SS) do próximo tempo de execução, GetNextTimest e GetNextTimestlist.
(4) Compare se o próximo tempo de execução da expressão de Cron é igual ao método de data especificada, ISSATISFICY.
Nota: A camada subjacente usa o processamento de cronexpressão do Quartz.
Para uso detalhado, você pode visualizar o código de teste relevante: CronexpressionUtiltest.
Ferramenta de computação demorada, suporta segundos, milissegundos, nanossegundos
incluir:
(1) O cálculo leva tempo e retorna resultados demorados.
(2) O cálculo leva tempo, personalize o nome da tarefa e os resultados demorados.
(3) Tempo de cálculo, retorne o tempo preciso, com 3 decimais, use Round_down para descartar as peças decimais que excedem 3 dígitos, etc.
Para uso detalhado, você pode visualizar o código de teste relevante: CositLtest.
Inclui funções:
(1) Analise a linguagem natural do tempo com base no horário atual.
(2) Analisar a linguagem natural do tempo com base no tempo especificado.
(3) Adicione uma variedade de métodos de chamada, como a execução simultânea da parseconCurrent, que pode definir o tempo limite e o pool de threads personalizado para melhorar a eficiência da execução.
Modificado em https://github.com/shinyke/time-nlp
Algumas modificações foram feitas da seguinte forma:
(1) encapsula os atributos e renomeá -los para cumprir os padrões de nomeação de camelos.
(2) Altere o arquivo de recurso regular de carregamento para o carregamento de singleton.
(3) Re-dividindo as classes em classes separadas de acordo com suas funções.
(4) Reescreva usando Java 8 Data API.
(5) Adicione comentários e otimize o código.
(6) Reparar o problema no projeto original: tempo padrão yyyy-mm-dd, aaaaa-mm-dd hh: mm: ss e problemas de análise de mm-dd hh: mm.
(7) Corrija o problema no projeto original: 1 hora, 1 hora e meia, 1 hora e 50 minutos e outros problemas de análise; e apoie -o em segundos, como 50 segundos, 10 minutos e 30 segundos.
(8) Reparar o problema no projeto original: o horário atual para reparo é 10h, portanto, três horas serão identificadas como o problema de três da tarde de amanhã.
(9) Corrija o problema no projeto original: corrija o problema de exceção de resolução decimal.
(10) Otimização de desempenho, pré -compilado as regularidades usadas e as coloque no cache e use -as diretamente na próxima vez para melhorar o desempenho.
Nota: A PNL terá uma certa taxa de falha de reconhecimento e continuará a iterar e melhorar a taxa de sucesso.
Esse recurso não está incluído na mini versão.
Para uso detalhado, você pode visualizar o código de teste relevante: TimenlputilTest.
Constantes da unidade de tempo, que facilitam o cálculo da conversão da unidade, como definir o tempo de cache por 3 dias: 3*milissegunds_per_day (24*60*60*1000 milissegundos por dia)
Incluir:
(1) Converta o valor da unidade básica, como MillisEconds_Per_Seconds 1000 milissegundos por segundo.
(2) Converter para o valor básico de segundos, como Seconds_Per_Day, o número de segundos por dia é 24*60*60.
(3) converter para o valor básico de milissegundos, como milissegunds_per_day. O número de milissegundos por dia é de 24*60*60*1000.
Para uso detalhado, você pode visualizar o código de teste relevante: xktimeConstantTest.
(1) Projeto de garfo.
(2) Modificar na filial do dev.
(3) Envie a solicitação de tração.
(1) Feriados comuns, como dia de ano novo, festival de primavera, festival de Qingming, Dia do Trabalho, Dragon Boat Festival, Festival no meio do outono e outros feriados.
(2) suportado pelos 24 termos solares.