XK-Time es una herramienta para la conversión de tiempo, el cálculo de tiempo, el formato de tiempo, el análisis de tiempo, el calendario, la expresión de tiempo de tiempo y la PNL de tiempo, etc. Utiliza Java8, segura de hilos, fácil de usar y más de 70 plantillas de formato de fecha común, soporte Java8 Time Clase y fecha, peso ligero, sin dependencias de terceros.
<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'
El kit de herramientas de XK-Time utiliza la API Java8, entre los cuales se han agregado instantáneos, localDate, LocalDateTime, Localtime, ZonedDatetime, etc. son todas las clases seguras de hilo, y se han agregado métodos más ricos. Sobre esta base, las clases de herramientas relacionadas se desarrollan para que sean más seguras de hilos, lo que las hace más convenientes de usar.
XK-Time Toolkit, las funciones anteriores se dividen en 3 clases de herramientas de acuerdo con la conversión de tiempo, el cálculo del tiempo y el formato y el análisis de tiempo: DataTimeconverterutil, DatetImecalCulatorUtil y DateTimeFormatterUtil. Cada clase solo tiene una función para usar fácilmente.
2.4.1 La implementación de los paquetes de tiempo de Joda Time y Java8 es básicamente las mismas, ambos dominados por Stephen Colebourne. A partir de Java8, se recomienda usar el paquete de tiempo Java8 para reemplazar el tiempo Joda.
2.4.2 XK-Time se basa en la API de fecha Java 8 y es una herramienta complementaria, similar a la fecha anterior.
(1) La biblioteca de clase Java8 se implementa verticalmente a nivel jerárquico, mientras que XK-Time se divide en 3 clases de acuerdo con las funciones generales, como la conversión, el cálculo, el formato y el análisis.
(2) La fecha de Java8 se convierte en una nueva clase, y debe ver la documentación de la API, y XK-Time se convierte internamente, para que esa fecha pueda usar directamente las nuevas características de Java8.
(3) Reimplementos de tiempo XK Las funciones comúnmente utilizadas de DateUtil de acuerdo con la API Java 8, y al mismo tiempo, algunas extensiones están hechas para hacer que el uso sea más conveniente.
Incluir:
(1) Fecha, Date Local, LocalDateTime, Localtime, Instant, ZonedDatetime, Yearmonth, Timestamp, Timestamp y Temporalaccessor se convierten entre sí.
(2) Las unidades de tiempo como días, horas, minutos, segundos y milisegundos se convierten entre sí, lo que respalda la conversión precisa de unidades pequeñas a unidades grandes. Por ejemplo, MinutetohourPrecise (NUM LARGO) 90 minutos a horas, que es de 1.5 horas.
(3) Convierta ZonedDatetime mientras admite la conversión a una zona horaria específica, como TozonedDatetime (fecha de fecha, String ZoneId) y TozonedDateTiMeandTransformZone (localDateTime LocalDatetime, String TargetZoneid).
Tenga en cuenta que para las conversiones relacionadas con la hora del zoneddatetime, especialmente durante otros tiempos, las conversiones en ZonedDatetime, debe prestar atención a la consistencia del tiempo y la zona horaria correspondiente.
Para un uso detallado, puede ver el código de prueba relevante: DataTiMeConverterUtttest.
incluir:
(1) Obtenga el método de atributo de tiempo (admite año, mes, hora, minuto, milisegundo, semana, sello de tiempo, etc.), obtenga* Por ejemplo, Getyear (fecha de fecha) obtiene la parte del año, getMonthcnlong (fecha de fecha) obtiene el mes chino, getdayofweekcn (fecha de fecha), obtenga la semana china.
(2) Obtenga el método de operación de Time Plus, más* Por ejemplo, Plusyears (Fecha de fecha, Larga cantidad) Aumente la cantidad de valor de Toadd en el año actual.
(3) Obtenga el método de operación de tiempo de tiempo de tiempo, menos* Por ejemplo, menos ALEARS (Fecha de fecha, Larga MitionalToSubtract) El año horario actual disminuye el valor de los tosubratos.
(4) Obtenga el método de atributo de modificación de tiempo, con* Por ejemplo, con Withyear (fecha, fecha, larga newValue) para modificar el valor de hora y año actuales a NewValue.
(5) Obtenga 2 veces para comparar, entre*, por ejemplo, BetweNotaldays (fecha de inicio de inclinación, fecha endexclusiva) compare 2 veces para devolver el número total de días.
(6) Otros métodos comunes, como Isleapyear (fecha, fecha de fecha) para determinar si es un año bisiesto, ISWeekend (fecha de fecha) para determinar si es un fin de semana, ISEXPIRY (String Yearmonthstr) para expirar, etc.
(7) Método de cálculo de conversión de zona horaria, transformación*, como transformación (zoneddateTime ZonedDateTime, String ZoneId)
(8) Compare 2 veces y métodos de igualdad, compare*, como comparar (Fecha de fecha1, fecha Fecha2)
(9) Obtenga el método de hora de inicio exacto, Inicio*, Fin*, como inicioTiMeOfMonth () Hora de inicio del mes Fecha del primer día +00: 00: 00, EndTimeOfMonth () Último día Fecha +23: 59: 59 precisa a segundos; EndAccuracyTimeof*, preciso para milisegundos (fecha), preciso para nanosegundos (localDatetime).
(10) Métodos para comparar y juzgar el mismo mes y día, Issamemonthday*, entreNextsamemonthday*, Nextsamemonthday*, por ejemplo, para juicios de comparación de fechas periódicas como cumpleaños, festivales, etc.
(11) Método de cálculo de constelación, GetConstellation*, como GetConstellationNamecn (String Monthaystr), calcula las constelaciones basadas en la fecha.
(12) Calcule la lista de tiempo del año y el mes y el intervalo de tiempo de inicio, la lista Get*, como GetDateList (int Year, Int Month), calcula la lista de tiempo del año y el mes especificados.
(13) Método para reducir la precisión del tiempo, la reducción de la concurrencia*, como ReduccuracyToday (fecha de fecha), reducir la precisión del tiempo a los días y agregar 0 a otros métodos, devolver, por ejemplo, 2020-04-23 00:00:00.
(14) Obtenga el método de marca de tiempo, Getepoch*, por ejemplo, Getepochmilli () obtiene la marca de tiempo, Getepochmilliformat () obtiene la cadena de formato de marca de tiempo (aaa yyyy-mm-dd hh: mm: ss)
(15) Método de cálculo de edad, Getage*, como Getage (Fecha de cumpleaños), calcula la edad por cumpleaños.
(16) Método para determinar si el cumpleaños está aquí, Isbirthday*, por ejemplo, Isbirthday (cumpleaños de fecha), determine si la fecha actual está aquí basada en el cumpleaños.
(17) Cómo calcular el número de semanas, semana de*, como WeekOfMonth (fecha de fecha), cuya semana del mes es la fecha.
(18) Determine si el método de lunes y viernes, Ismonday*, Iszhouyi*, como Iszhouyi (fecha de fecha), Ismonday.
(19) El método de cálculo de doce horas, Gettwelvetwo*, como gettwelvetwo (fecha de fecha), obtenga las doce horas correspondientes a la hora especificada.
(20) Método de cálculo del trimestre, Get Quarter*, como GetQuerter (fecha de fecha), obtenga el trimestre correspondiente al tiempo especificado.
(21) Obtenga el método de tiempo de inicio preciso para el trimestre (cuatro trimestres), StartTimeOf*trimestre, como StartTimeOffirstquarter (INT Year), obtenga el primer trimestre del año especificado.
(22) Obtenga el método de tiempo de inicio preciso del año, StartTimeOfyear, como StartTimeOfyear (INT Year), obtenga la hora de inicio del año especificado.
(23) Tiempo de uso común (mañana, la próxima semana, el próximo mes, el próximo año, etc.) Métodos de cálculo, como Tomorrow (), calcule mañana y fecha de retorno.
(24) Modifique el método de valor de la semana con Dayofweek*, como WithdayOfWeek (fecha de fecha, Long NewValue), modifique la semana al valor especificado NewValue y la fecha de retorno.
(25) Cálculo del día laboral chino (incluida la información de vacaciones), incluidos métodos como determinar si la fecha actual es una jornada laboral y el próximo día hábil, Ischinesworkday*, Nextchinesworkday*,
Por ejemplo, ischineseworkday (fecha, string holidaydata), nextchineseworkday (fecha de fecha, string holidaydata),
Datos de vacaciones, si los datos de vacaciones no respaldan el año, se juzgará de lunes a viernes como días hábiles. A continuación se muestra la información de vacaciones que compilé 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-06: 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 si hay un método de superposición (intersección) para 2 o más períodos de tiempo, isoverlap*, como isoverlap (fecha inicio de inicio1, fecha enddate1, fecha inicio de inicio2, fecha enddate2), superposición devuelve verdadero.
(27) Método para calcular el tiempo promedio, AverageTime*, como AverageTime (List DataList), devuelve el tiempo promedio, como "15:03:03".
(28) Calcule el método de cuenta regresiva basado en el valor del milisegundo, admite los objetos de tiempo entrantes y los formatos especificados, Countdown*, como Countdown (Long Millis), y devuelve la cuenta regresiva, como "27 horas, 10 minutos, 30 segundos".
(29) Obtenga el método de lista de tiempo de formato para el intervalo especificado, como GetDateFormAtList (Fecha de inicio, Fecha de finalización, String DateFormatPattern) admite la aprobación de plantillas de formato.
(30) Calcule el método de tiempo de superposición (intersección) de 2 períodos de tiempo, como superposición (fecha de inicio de fecha1, fecha final de fecha1, fecha inicio de inicio2, fecha enddate2) y devuelve el valor de milisegundos.
Para un uso detallado, puede ver el código de prueba relevante: DataTimecalCulatorUttiltest.
Contiene formatos de fecha común como:
yyyy-mm-dd
HH: MM: SS
yyyy-mm-dd HH: mm: ss
yyyy-mm-dd HH: mm: ss.sss
yyyy-mm-dd hh: mm: ss.ssssssss
yyyy-mm-dd HH: mm: ss.ssssssssssss
aaa yyy-mm-dd't'hh: mm: SSZ, etc., admite tiempos precisos como milisegundos, microsegundos y nanosegundos.
(1) Método de formato, formato*, como Formattodatestr (fecha de fecha), devuelve la parte de la fecha, como: yyyy-mm-dd;
formato de formato (fecha de fecha, formateador de información datetEmatter) Puede seleccionar un formateador definido como YYYY_MM_DD_HH_MM_SS_FMT (A yyyy-MM-DD HH: MM: SS) Fecha de formateo.
(2) Método analítico, analizador*, como parsedatestrTodate (texto de cadena) analiza la fecha yyyy-mm-dd, fecha de devolución;
parsetodate (texto de cadena, dateTimeFormatter Formatter) analiza hasta la fecha de acuerdo con Formatter.
(3) Método de análisis automático, reconocer y analizar automáticamente de acuerdo con las características de la cadena, SmartParse*, como SmartParSetodate (String Text) analiza automáticamente la fecha.
(4) El método de análisis automático para el formato ISO (incluida la T) se reconoce y analiza automáticamente de acuerdo con las características de la cadena. parseiso*, como parseisotodate (texto de cadena) se analiza automáticamente la fecha.
(5) Método de la marca de tiempo de análisis, Parseepochmilli*, como Parseepochmillitodate (texto de cadena), la marca de tiempo de análisis es fecha, como 1590224790000.
(6) Analice el formato predeterminado de la fecha, parsedatedefaultstr*, como parsededefaultstrtodate (texto de cadena)
Analice EEE MMM DD HH: MM: SS ZZZ YYYY Por ejemplo: Sábado 23 de mayo 17:06:30 CST 2020 es fecha.
(7) Métodos de formato de zona horaria personalizada, como formato (fecha de fecha, formateador de datetimeFormatter, string zoneId), fecha de formato de acuerdo con ZoneId.
(8) Personalice el método de formato de plantilla, como el formato (fecha de fecha, la cadena dateFormatPattern), la fecha de formato de acuerdo a la fecha de la fecha.
(9) Métodos de análisis de plantillas personalizadas, como Parsetodate (texto de cadena, cadena dateFormatPattern), fecha de formato de acuerdo a dateFormatPattern.
(10) Formato predeterminado de la marca de tiempo (A yyyy-MM-DD HH: MM: Ss.ffffffffffff donde ffffffff nanosegundos, omita el siguiente método de formato 0).
Por ejemplo, FormattimestampStyle (fecha de fecha).
(11) Formato predeterminado de la marca de tiempo (yyyyy-mm-dd hh: mm: ss.ffffffffffff donde ffffffff es nanosegundos, omitiendo los siguientes 0).
Por ejemplo, parsetimestampStyletodate (texto de cadena).
(12) Métodos para verificar si el formato de fecha es correcto, ISValidDate*, como IsValidDate (texto de cadena), verifique si la cadena de formato YYYYY-MM-DD es correcta.
(13) De acuerdo con el método de análisis de la matriz de plantillas personalizadas, como parsetodate (texto de cadena, cadena [] dateFormatpatterns), DateFormatPatterns admite múltiples plantillas, y mientras una de las analizaciones sea exitosa, se devolverá la fecha correspondiente.
(14) Analice la hora del lenguaje natural, hoy, mañana, la próxima semana, el próximo mes, el próximo año, ayer, la semana pasada, el mes pasado, el año pasado, etc., como ParsenaturallanguageTate (texto de cadena),
ParsenaturallanguageTate (texto de cadena, mapa <string, string> NaturallanguageMap) admite mapas de tiempo de lenguaje natural personalizado.
(15) Métodos de formato de fecha china, como Formattochinesedatestr (fecha de fecha, boolean isuppercase), isuppercase falso: 11 de septiembre de 2021 Verdadero: 11 de septiembre de 2021.
(16) Métodos de análisis de fecha chino, como ParsechinesedatestrTodate (texto de cadena), soporte: 11 de septiembre de 2021 y 11 de septiembre de 2021 Análisis de fecha de formato.
Nota: Al formatear y analizar diferentes momentos de la zona horaria del sistema, use un método de formato de zona horaria personalizada, o puede usar el método Withzone para restablecer la zona horaria, como:
Yyyy_mm_dd_hh_mm_ss_sss_fmt.withzone (ZoneID.of ("Europa/París").
Para un uso detallado, puede ver el código de prueba relevante: DateTimeFormatterUtTiltest.
incluir:
(1) Genere un calendario para el tiempo especificado (calendario que contiene la jerarquía de año, mes y día). GenerateCalendar* Por ejemplo, GenerateCalendar (Inten Year, Int Mes) genera un calendario para el año y el mes especificados.
(2) Generar un calendario del tiempo especificado (calendario que contiene la jerarquía de año, mes y día), incluido el calendario lunar y todos los métodos de información de vacaciones, GeneratECalendarwithholiday*, GenerateCalendarwithholiday (intane, int Month, map <string, string> loceholmap, map <string> cheenholdmap, map <string, integer> dataTyger). Calendario de año y mes especificados, incluido el calendario lunar y toda la información de vacaciones, y puede personalizar las vacaciones y los días hábiles, etc.
Para un uso detallado, puede ver el código de prueba relevante: CalendarUtiltest.
Incluir:
(1) Cálculo de la fecha lunar, año, mes y día.
(2) Calcule los signos del zodiaco durante el calendario lunar.
(3) Cálculo de los veinticuatro términos solares, etc. (4) Notas sobre el calendario lunar al calendario gregoriano: solo es compatible con la conversión del calendario lunar en el calendario gregoriano de 1900-2100.
Para un uso detallado, puede ver el código de prueba relevante: LUNARDATETEST.
Incluir:
(1) Calcule las vacaciones gregorianas, getLocalholiday* Por ejemplo, getLocalholiday (fecha de fecha) calcula las vacaciones de la fecha de gregorianos, getLocalholiday (fecha de fecha, mapa <cadena, cadena> localholidmap) puede pasar datos de vacaciones gregorianos personalizados.
(2) El cálculo de las vacaciones lunares, Getchineseholiday* Por ejemplo, getChineseholiday (fecha de fecha) calcula la fecha de vacaciones lunar, getchineseseholiday (fecha de fecha, mapa <cadena, cadena> chinoholidaymap) puede pasar en datos de vacaciones lunares personalizadas.
(3) El cálculo de los veinticuatro términos solares, GetSolarter* Por ejemplo, getSolarter (fecha de fecha) calcula los veinticuatro términos solares de la fecha.
Nota: Lunardate se usa en el calendario lunar y los veinticuatro términos solares, y solo respalda los cálculos de los 1900-2100 años del calendario gregoriano.
Puede ver los códigos de prueba relevantes para un uso detallado.
expresión cron de izquierda a derecha (separado por espacios): segundos (0-59) minutos (0-59) horas (0-23) Fecha (1-31) mes (entero de 1-12 o Jan-dic) Semana (entero de 1-7 o Sun-sat (1 = Sun)) Año (opcional, 1970-2099)
Se pueden usar caracteres especiales para todos los campos:, - * / son enumeración, rango, arbitrarias, fechas de intervalo y otros:? LW es cualquier día de trabajo válido, el último y válido (de lunes a viernes)
También puedes usar la semana:? L # es cualquiera, y finalmente, la expresión cron se usa comúnmente en la semana de cada mes:
(1) 0 0 2 1 *? * Indica el activación a las 2 am en el 1er del mes (2) 0 15 10? * Mon-Fri indica que la asignación se realiza a las 10:15 am de lunes a viernes (3) 0 15 10? * 6L 2002-2006 indica que la asignación se realiza a las 10:15 a.m. del último viernes de cada mes de 2002-2006 (4) 0 0/30 9-17 * *? Indica cada media hora (5) 0 15 10 L *? Indica activar a las 10:15 a.m. del último día de cada mes (6) 0 15 10? * 6#3 indica activarse a las 10:15 am del tercer viernes de cada mes (6) 0 15 10? * 6#3 indica activarse a las 10:15 am el tercer viernes de cada mes (4) 0 0/30 9-17 * *? Indica cada media hora (5) 0 15 10 L *? Indica activar a las 10:15 a.m. del último día de cada mes (6) 0 15 10? * 6#3 indica activarse a las 10:15 am del tercer viernes de cada mes (6) 0 15 10? * 6#3 indica activarse a las 10:15 am del tercer viernes de cada mes (6) 0 15 10? *
Contiene (1) validación y formateo de métodos de expresión cron, ISValidexpression y FormateXpression.
(2) Genere los siguientes o más métodos de tiempo de ejecución, GetNextTime y GetNextTimEllist.
(3) Genere el método de formateo de fechas (aaa yyy-mm-dd hh: mm: ss) de la próxima hora de ejecución, getNextTimestrest y getNextTimestrylist.
(4) Compare si el siguiente tiempo de ejecución de la expresión cron es igual al método de fecha especificado, es satisfecho.
Nota: La capa subyacente utiliza el procesamiento de cronexpresión de cuarzo.
Para un uso detallado, puede ver el código de prueba relevante: CronexpressionUtiltest.
La herramienta de consumo de tiempo de calculación, admite segundos, milisegundos, nanosegundos
incluir:
(1) El cálculo lleva tiempo y devuelve resultados que consumen mucho tiempo.
(2) El cálculo lleva tiempo, personalice el nombre de la tarea y emite resultados que consumen el tiempo.
(3) Tiempo de cálculo, devolver el tiempo preciso, con 3 decimales, use Round_down para descartar las partes decimales que exceden 3 dígitos, etc.
Para un uso detallado, puede ver el código de prueba relevante: CostuitlTest.
Incluye funciones:
(1) Analice el lenguaje natural del tiempo en función del tiempo actual.
(2) Analice el lenguaje natural del tiempo en función del tiempo especificado.
(3) Agregue una variedad de métodos de llamadas, como la ejecución concurrente Parseconcurrent, que puede establecer el tiempo de tiempo de espera y el grupo de subprocesos personalizado para mejorar la eficiencia de la ejecución.
Modificado de https://github.com/shinyke/time-nlp
Se han realizado algunas modificaciones de la siguiente manera:
(1) Encapsula los atributos y cambia el nombre de que cumplan con los estándares de nombres de camello.
(2) Cambie el archivo de recursos regular de carga a Singleton Loading.
(3) volver a dividir las clases en clases separadas de acuerdo con sus funciones.
(4) Reescribir usando Java 8 Fecha API.
(5) Agregue comentarios y optimice el código.
(6) Repare el problema en el proyecto original: tiempo estándar yyyy-mm-dd, yyyy-mm-dd HH: MM: SS y YYYY-MM-DD HH: problemas de análisis MM.
(7) solucionar el problema en el proyecto original: 1 hora, 1 hora y media, 1 hora y 50 minutos y otros problemas de análisis; y apoyarlo a segundos, como 50 segundos, 10 minutos y 30 segundos.
(8) Reparar el problema en el proyecto original: La hora actual para la reparación es de las 10 a.m., por lo que tres PM se identificarán como el problema de las tres PM mañana.
(9) Arreglar el problema en el proyecto original: solucione el problema de excepción de resolución decimal.
(10) Optimización del rendimiento, precompilar las regularidades utilizadas y ponerlas en el caché, y úselas directamente la próxima vez para mejorar el rendimiento.
Nota: NLP tendrá una cierta tasa de falla de reconocimiento, y continuará itando y mejorando la tasa de éxito.
Esta característica no está incluida en la versión mini.
Para un uso detallado, puede ver el código de prueba relevante: TimeNlputiltest.
Constantes de la unidad de tiempo, que facilitan el cálculo de la conversión de la unidad, como establecer el tiempo de caché durante 3 días: 3*MilliseConds_per_day (24*60*60*1000 milisegundos por día)
Incluir:
(1) Convierta el valor de la unidad básica, como MilliseConds_per_Seconds 1000 milisegundos por segundo.
(2) Convertir al valor básico de segundos, como Seconds_per_day, el número de segundos por día es 24*60*60.
(3) Convertir al valor básico de milisegundos, como MilliseConds_per_day. El número de milisegundos por día es 24*60*60*1000.
Para un uso detallado, puede ver el código de prueba relevante: XktimeConstantTest.
(1) Proyecto de bifurcación.
(2) Modificar en la rama de desarrollo.
(3) Enviar solicitud de extracción.
(1) Vacaciones comunes, como el Día de Año Nuevo, el Festival de Primavera, el Festival Qingming, el Día del Trabajo, el Festival de Dragones del Barco, el Festival de Medio Otoño y otras vacaciones.
(2) Apoyado por los 24 términos solares.