XK-Time est un outil de conversion dans le temps, de calcul du temps, de formatage de temps, d'analyse temporelle, de calendrier, d'expression de temps de temps et de temps NLP, etc. Il utilise Java8, Thread-Safe, Facile à utiliser et plus de 70 modèles de mise en forme de date courants, supportent Java8 Class et Date, léger, pas de dépendances tierces.
<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'
La boîte à outils XK-Time utilise l'API Java8, parmi laquelle instantané, localdate, localDateTime, localtime, zoneddatetime, etc. sont toutes des classes de file et plus riches ont été ajoutées. Sur cette base, des classes d'outils connexes sont développées pour les rendre plus en file d'attente, ce qui les rend plus pratiques à utiliser.
XK-Time Toolkit, les fonctions ci-dessus sont divisées en 3 classes d'outils en fonction de la conversion temporelle, du calcul du temps et de la mise en forme du temps et de l'analyse: DatetimeConverterUtil, DatetimecalculatorUtil et DatetimeFormatterUtil. Chaque classe n'a qu'une seule fonction pour une utilisation facile.
2.4.1 La mise en œuvre des packages de temps Joda-Time et Java8 est essentiellement le même, tous deux dominés par Stephen Colebourne. À partir de Java8, il est recommandé d'utiliser le package de temps Java8 pour remplacer Joda-Time.
2.4.2 XK-Time est basé sur l'API de la date Java 8 et est un outil supplémentaire, similaire à la précédente Dateutil.
(1) La bibliothèque de classe Java8 est implémentée verticalement à un niveau hiérarchique, tandis que XK-Time est divisé en 3 classes selon des fonctions générales, telles que la conversion, le calcul, le formatage et l'analyse.
(2) La date Java8 est convertie en une nouvelle classe, et vous devez afficher la documentation de l'API, et XK-Time est converti en interne, afin que la date puisse utiliser directement les nouvelles fonctionnalités de Java8.
(3) XK-Time Rempements les fonctions couramment utilisées de DateUtil selon l'API Java 8, et en même temps, certaines extensions sont faites pour être plus pratique.
Inclure:
(1) Date, LocalDate, LocalDatetime, Localtime, Instant, ZonedDateTime, Yearmonth, Corystamp, Hordestamp et TemporalCesseur sont convertis les uns aux autres.
(2) Les unités de temps telles que les jours, les heures, les minutes, les secondes et les millisecondes sont converties les unes aux autres, soutenant la conversion précise de petites unités en grandes unités. Par exemple, MinuteTohourprecise (Long Num) 90 minutes à heures, soit 1,5 heures.
(3) Convertir ZonedDateTime tout en prenant en charge la conversion en un fuseau horaire spécifié, tel que ToZonedDateTime (date de date, chaîne ZoneID) et TozonedDateTimeAndTransformZone (localDatetime localDatetime, String TargetzoneId).
Notez que pour les conversions liées à ZonedDatetime, en particulier pour d'autres conversions de temps en zonedDateTime, vous devez prêter attention à la cohérence de l'heure et du fuseau horaire correspondant.
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: DateTimeConverterUilTest.
inclure:
(1) Obtenez la méthode d'attribut d'heure (prend en charge l'année, le mois, l'heure, la minute, la milliseconde, la semaine, l'horodatage, etc.), Get * Par exemple, Getyear (date de date) obtient la partie de l'année, Getmonthcnlong (date de date) obtient le mois chinois, getayofweekcn (date de date), obtenez la semaine chinois.
(2) Obtenez la méthode de l'heure Plus, plus * par exemple, les plusyears (date de date, montant long pour) augmenter la valeur du montant de l'heure actuelle.
(3) Obtenez la méthode de fonctionnement du temps, moins * par exemple, moins (date de date, montant long).
(4) Obtenez la méthode d'attribut de modification de l'heure, avec * par exemple, avec (date de date, long newValue) pour modifier la valeur d'heure et de l'année en cours à NewValue.
(5) Obtenez 2 fois à comparer, entre * par exemple, Betweentotaldays (date de démarrage, date de l'endettement) comparez 2 fois pour retourner le nombre total de jours.
(6) D'autres méthodes courantes, telles que Isleapyear (date de date) pour déterminer s'il s'agit d'une année de saut, Isweekend (date de date) pour déterminer s'il s'agit d'un week-end, est Expirant (String Yearmonthstr) à expirer, etc.
(7) Méthode de calcul de la conversion du fuseau horaire, Transform *, comme Transform (ZonedDatetime ZonedDateTime, String ZoneId)
(8) Comparez 2 fois et méthodes d'égalité, comparer *, telles que comparer (date de date1, date de date 2)
(9) Obtenez la méthode de début exacte, démarrer *, fin *, telles que startTimeOfMonth () Heure de début du mois de la première date de jour +00: 00: 00, EndTimeOfMonth () Dernier jour Date +23: 59: 59 précis en secondes; EndAccuracyTimeof *, exact aux millisecondes (date), précis aux nanosecondes (localDateTime).
(10) Méthodes pour comparer et juger le même mois et le même jour, IssameMemthday *, entre Nextsamemonthday *, SextSameMemhday *, par exemple, pour des jugements de comparaison de date périodiques tels que les anniversaires, les festivals, etc.
(11) Méthode de calcul de la constellation, GetConStellation *, telle que getConstellationNameCN (String Monthaydaystr), calcule les constellations en fonction de la date.
(12) Calculez la liste temporelle de l'intervalle spécifié de l'année et du mois ou du temps de départ, obtenez * la liste, telle que GetDatelist (int an, int mois), calcule la liste des temps de l'année et le mois spécifiés.
(13) Méthode pour réduire la précision du temps, réduceacuracyto *, telles que reduceAcurAcyToday (date de date), réduire la précision du temps à des jours et ajouter 0 à d'autres méthodes, retour, par exemple, 2020-04-23 00:00:00.
(14) Obtenez la méthode d'horodatage, getEpoch *, par exemple GetEpochmilli () obtient l'horodatage, GetEpochMilliform () obtient la chaîne de format horodat
(15) Méthode de calcul de l'âge, Getage *, comme Getage (anniversaire de date), calcule l'âge par anniversaire.
(16) Méthode pour déterminer si l'anniversaire est ici, Isbirthday *, par exemple, Isbirthday (anniversaire de date), déterminez si la date actuelle est ici en fonction de l'anniversaire.
(17) Comment calculer le nombre de semaines, semaine *, comme la semaine de mois (date de date), quelle semaine du mois de la date est.
(18) Déterminez si la méthode du lundi et du vendredi, Ismonday *, Iszhouyi *, comme Iszhouyi (date de date), Ismonday.
(19) La méthode de calcul des douze heures, getTwelvetwo *, comme getTwelvetwo (date de date), obtenez les douze heures correspondant à l'heure spécifiée.
(20) Méthode de calcul du trimestre, GetQuarter *, comme GetQuarter (date de date), obtenez le trimestre correspondant à l'heure spécifiée.
(21) Obtenez la méthode de départ précise du trimestre (quatre trimestres), StartTimeOf *, tel que StartTimeOffirsTquarter (INT Year), obtenez le premier trimestre de l'année spécifiée.
(22) Obtenez la méthode précise de l'année de début de l'année, StartTimeOfyear, comme StartTimeOfyear (int an), obtenez l'heure de début de l'année spécifiée.
(23) Heure couramment utilisée (demain, semaine prochaine, le mois prochain, l'année prochaine, etc.) Méthodes de calcul, telles que demain (), calculer demain et la date de retour.
(24) Modifiez la méthode de la valeur de la semaine avec WithayOfweek *, telle que WithayOfweek (date de date, longueurwovalue), modifiez la semaine à la valeur spécifiée NewValue et la date de retour.
(25) Calcul de la journée de travail chinois (y compris les informations des fêtes), y compris des méthodes telles que déterminer si la date actuelle est une journée de travail et le jour ouvrable suivant, Ischineseworkday *, NextChineseworkday *,
Par exemple, IschineseWorkday (date, String HolidayData), NextChineseWorkday (date de date, String HolidayData),
Les données des fêtes, si les données des fêtes ne soutiennent pas l'année, elles seront jugées du lundi au vendredi en tant que jours ouvrables. Vous trouverez ci-dessous les informations de vacances que j'ai compilées pour 2021:
2021-01-01: 0,2021-02-07: 12021-02-11: 0,2021-02-12: 0,2021-02-15: 02021-02-16: 0,202 1-02-17: 0,2021-02-20: 12021-04-05: 0,2021-04-25: 12021-05-03: 02021-05-04: 0,2021-0 5-05: 0,2021-05-08: 1 2021-06-14: 0,2021-09-18: 12021-09-20: 02021-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) Déterminez s'il y a la méthode de chevauchement (intersection) pour 2 périodes de temps ou plus, Isoverlap *, telles que Isoverlap (Date StartDate1, Date EndDate1, Date startDate2, Date EndDate2), les rendements se chevauchent.
(27) Méthode pour calculer le temps moyen, AWERAGETime *, tel qu'AverageTime (liste Datelist), renvoie le temps moyen, tel que "15:03:03".
(28) Calculez la méthode du compte à rebours basé sur la valeur de la milliseconde, prend en charge les objets à temps entrant et les formats spécifiés, le compte à rebours *, comme le compte à rebours (long millis), et renvoie le compte à rebours, tel que "27 heures, 10 minutes, 30 secondes".
(29) Obtenez la méthode de la liste des temps de formatage pour l'intervalle spécifié, tel que GetDateFormatList (date de démarrage, date de fin, chaîne DateFormatPattern) prend en charge le passage des modèles de formatage.
(30) Calculez la méthode d'heure du chevauchement (intersection) de 2 périodes de temps, telles que la surlance (Date StartDate1, Date EndDate1, Date StartDate2, Date EndDate2), et renvoie la valeur de la milliseconde.
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: DatetimeCalculatorUiltTest.
Contient des formats de date communs tels que:
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.sssssssss
yyyy-mm-dd hh: mm: ss.sssssssssssss
yyyy-mm-d't'hh: mm: ssz, etc., prend en charge des temps précis tels que des millisecondes, des microsecondes et des nanosecondes.
(1) Méthode de format, format *, tel que FormAtTodatestr (date de date), renvoie la partie de la date, telle que: yyyy-mm-dd;
Format (date de date, format DateTimeFormatter) Vous pouvez sélectionner un formateur défini tel que YYYY_MM_DD_HH_MM_SS_FMT (YYYY-MM-DD HH: MM: SS) Date de formatage.
(2) Méthode analytique, Parse *, telle que ParseDatestrTodate (Texte de chaîne) analyse la date Yyyy-mm-dd, date de retour;
PARTETODATE (Texte de chaîne, format DateTimeFormatter) Parse à ce jour selon le formateur.
(3) Méthode d'analyse automatique, reconnaître automatiquement et analyser en fonction des caractéristiques de la chaîne, SmartParse *, telles que SmartParsetodate (texte de la chaîne) analyse automatiquement la date.
(4) La méthode d'analyse automatique pour le format ISO (y compris t) est automatiquement reconnue et analysée en fonction des caractéristiques de la chaîne. Parseiso *, tel que ParseisotoDate (texte de chaîne) analyse automatiquement la date.
(5) Méthode d'horodatage d'analyse, parseepochmilli *, comme ParseEpochmilLitodate (texte de la chaîne), l'horodatage d'analyse est la date, comme le 1590224790000.
(6) Analyser le format par défaut de la date, ParseDatedEfaultStr *, tel que ParseDatedEfaultStrtodate (Text de chaîne)
Analyser EEE MMM DD HH: MM: SS ZZZ YYYY Par exemple: Sat 23 mai 17:06:30 CST 2020 est la date.
(7) Les méthodes de formatage du fuseau horaire personnalisées, telles que le format (date de date, format de format DatetimeFormatter, String ZoneID), date de format selon ZoneId.
(8) Personnaliser la méthode de formatage du modèle, tel que le format (date de date, chaîne dateFormatPattern), date de format selon DateFormatPattern.
(9) Modèles de l'analyse de modèle personnalisés, tels que parSetodate (texte de chaîne, chaîne dateFormatPattern), date de format selon DateFormatPattern.
(10) Format par défaut de l'horodatage (Yyyy-mm-dd HH: MM: SS.FFFFFFFFFFFFF WHERE FFFFFFFF Nanosecondes, omettez la méthode de mise en forme 0 suivante.
Par exemple, FormAtTimeStAmpstyle (date de date).
(11) Format par défaut de l'horodatage (Yyyy-mm-dd HH: MM: SS.FFFFFFFFFFFFF où FFFFFFFFF est nanosecondes, omettant le 0 suivant).
Par exemple, parSetImEstampStyletOdate (texte de chaîne).
(12) Méthodes pour vérifier si le format de date est correct, isValidDate *, tel que IsvalidDate (texte de chaîne), vérifiez si la chaîne de format Yyyy-mm-dd est correcte.
(13) Selon la méthode d'analyse du tableau personnalisé, telles que ParTetodate (texte de chaîne, String [] DateFormatPatterns), DateFormatPatterns prend en charge plusieurs modèles, et tant que l'un des analyses est réussi, la date correspondante sera renvoyée.
(14) Analyser le temps du langage naturel, aujourd'hui, demain, la semaine prochaine, le mois prochain, l'année prochaine, hier, la semaine dernière, le mois dernier, l'année dernière, etc., comme Parsenaturallanguagetodate (texte de la chaîne),
ParsenaturalLanguageTodate (Texte de chaîne, map <string, string> naturallanguagemap) prend en charge les cartes de temps de langage naturel d'analyse du langage naturel.
(15) Les méthodes de formatage des dates chinoises, telles que FormAtToCHineSedatestr (date de date, booléen isuppercercase), Isuppercase false: 11 septembre 2021 Vrai: 11 septembre 2021.
(16) Méthodes d'analyse des dates chinoises, telles que ParsechineseDatestrTodate (texte de la chaîne), support: 11 septembre 2021 et 11 septembre 2021 Analyse de date de format.
Remarque: Lors de la mise en forme et de l'analyse des différents moments du fuseau horaire du système, utilisez une méthode de formatage du fuseau horaire personnalisé, ou vous pouvez utiliser la méthode WithZone pour réinitialiser le fuseau horaire, tel que:
Yyyy_mm_dd_hh_mm_ss_sss_fmt.withzone (ZoneId.of ("Europe / Paris").
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: DateTimeFormatterUilTest.
inclure:
(1) Générer un calendrier pour l'heure spécifiée (calendrier contenant la hiérarchie de l'année, du mois et du jour). GenerateCalendar * Par exemple, GenerateCalendar (int an, int mois) génère un calendrier pour l'année et le mois spécifiés.
(2) Générer un calendrier de l'heure spécifiée (calendrier contenant la hiérarchie de l'année, du mois et du jour), y compris le calendrier lunaire et toutes les méthodes d'information des fêtes, GenerateCalendarwithHoliday *, GenerateCalendarwithHoliday (int an, int mois, map <string> localHoLidayMap, map <string> chinois holis Calendrier de l'année et du mois spécifiés, y compris le calendrier lunaire et toutes les informations de vacances, et peut personnaliser les vacances et les jours ouvrables, etc.
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: CalendaruilTest.
Inclure:
(1) Calcul de la date lunaire, de l'année, du mois et du jour.
(2) Calculer les signes du zodiaque pendant le calendrier lunaire.
(3) Calcul des vingt-quatre termes solaires, etc. (4) Notes sur le calendrier lunaire au calendrier grégorien: seule la conversion du calendrier lunaire dans le calendrier grégorien 1900-2100 est soutenue.
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: LunardateTest.
Inclure:
(1) Calculer les vacances grégoriennes, GetlocalHoliday * Par exemple, GetLocalHoliday (date de date) calcule les vacances grégoriennes de la date, getlocalholiday (date de date, carte <chaîne, chaîne> local vidaymap) peut passer en données de vacances grégoriennes personnalisées.
(2) Calcul des vacances lunaires, GetchineseHoliday * Par exemple, GetchineseHoliday (date de date) calcule les vacances lunaires de la date, getChineseHoliday (date de date, carte <chaîne, chaîne> Chinese HolidayMap) peut passer en données de vacances lunaires personnalisées.
(3) Calcul des vingt-quatre termes solaires, getolarterm * Par exemple, getolarter (date de date) calcule les vingt-quatre conditions solaires de date.
Remarque: Lunardate est utilisé dans le calendrier lunaire et les vingt-quatre termes solaires, et ne supporte que les calculs des années 1900-2100 du calendrier grégorien.
Vous pouvez afficher les codes de test pertinents pour une utilisation détaillée.
Expression de Cron de gauche à droite (séparée par les espaces): secondes (0-59) minutes (0-59) heures (0-23) Date (1-31) Mois (entier de 1-12 ou Jan-Dec) Semaine (entier de 1-7 ou Sun-Sat (1 = Sun)) (Facultatif, 1970-2099)
Les caractères spéciaux peuvent être utilisés pour tous les champs:, - * / sont l'énumération, la gamme, les dates d'intervalle arbitraires, et autres :? LW est toute la journée de travail valide (du lundi au vendredi)
Vous pouvez également utiliser la semaine :? L # est n'importe quel, et enfin, l'expression cron est couramment utilisée dans la semaine de chaque mois:
(1) 0 0 2 1 *? * Indique le déclenchement à 2 heures du matin le 1er du mois (2) 0 15 10? * Lun-FRI indique que la mission est effectuée à 10 h 15 du lundi au vendredi (3) 0 15 10? * 6L 2002-2006 indique que la mission est effectuée à 10 h 15 le dernier vendredi de chaque mois de 2002-2006 (4) 0 0/30 9-17 * *? Indique toutes les demi-heures (5) 0 15 10 l *? Indique le déclenchement à 10 h 15 le dernier jour de chaque mois (6) 0 15 10? * 6 # 3 indique le déclenchement à 10 h 15 le troisième vendredi de chaque mois (6) 0 15 10? * 6 # 3 indique le déclenchement à 10 h 15 le troisième vendredi de chaque mois (4) 0 0/30 9-17 * *? Indique toutes les demi-heures (5) 0 15 10 l *? Indique le déclenchement à 10 h 15 le dernier jour de chaque mois (6) 0 15 10? * 6 # 3 indique le déclenchement à 10 h 15 le troisième vendredi de chaque mois (6) 0 15 10? * 6 # 3 indique le déclenchement à 10 h 15 le troisième vendredi de chaque mois (6) 0 15 10? *
Contient (1) la validation et la mise en forme des méthodes d'expression CRON, l'isvalidexpression et le formatexpression.
(2) Générez les méthodes de temps d'exécution suivantes ou plus suivantes, GetNextTime et GetNexttimelist.
(3) Générez la méthode de formatage de date (Yyyy-mm-dd hh: mm: ss) du prochain temps d'exécution, getNextTimestr et getNextTimestrlist.
(4) Comparez si le prochain temps d'exécution de l'expression CRON est égal à la méthode de date spécifiée, IssatisfiedBy.
Remarque: La couche sous-jacente utilise le traitement de la cronexpression du quartz.
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: CronexpressionUtilTest.
L'informatique outil de longue date, prend en charge les secondes, les millisecondes, les nanosecondes
inclure:
(1) Le calcul prend du temps et renvoie des résultats longs.
(2) Le calcul prend du temps, personnalisez le nom de la tâche et sortit des résultats longs.
(3) Temps de calcul, renvoyer un timing précis, avec 3 décimales, utiliser Round_down pour éliminer les pièces décimales qui dépassent 3 chiffres, etc.
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: CostuitlTest.
Comprend des fonctions:
(1) Analyser le langage naturel du temps en fonction de l'heure actuelle.
(2) Analyser le langage naturel du temps en fonction du temps spécifié.
(3) Ajoutez une variété de méthodes d'appel, telles que l'exécution simultanée par ParsEconcurrent, qui peut définir le temps d'attente et le pool de threads personnalisés pour améliorer l'efficacité de l'exécution.
Modifié à partir de https://github.com/shinyke/time-nlp
Certaines modifications ont été apportées comme suit:
(1) encapsuler les attributs et les renommer pour se conformer aux normes de dénomination de chameau.
(2) Modifier le fichier de ressources régulier de chargement en chargement singleton.
(3) rediviser les classes en classes distinctes en fonction de leurs fonctions.
(4) Réécrire à l'aide de l'API Java 8 Date.
(5) Ajouter des commentaires et optimiser le code.
(6) Réparer le problème dans le projet d'origine: Time standard Yyyy-MM-DD, Yyyy-MM-DD HH: MM: SS et YYYY-MM-DD HH: MM Analyse Problems.
(7) résoudre le problème dans le projet d'origine: 1 heure, 1 et demi, 1 heure et 50 minutes et autres problèmes d'analyse; et soutenez-le en quelques secondes, tels que 50 secondes, 10 minutes et 30 secondes.
(8) Réparer le problème dans le projet d'origine: l'heure actuelle de réparation est de 10 h, donc trois heures seront identifiées comme le problème de trois heures demain.
(9) Correction du problème dans le projet d'origine: Correction du problème d'exception de la résolution décimale.
(10) Optimisation des performances, précompiler les régularités utilisées et les mettre dans le cache, et les utiliser directement la prochaine fois pour améliorer les performances.
Remarque: NLP aura un certain taux de défaillance de la reconnaissance, et il continuera d'itérer et d'améliorer le taux de réussite.
Cette fonctionnalité n'est pas incluse dans la version mini.
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: timeLpuilTest.
Les constantes d'unité de temps, qui facilitent le calcul de la conversion unitaire, comme la définition du temps de cache pendant 3 jours: 3 * millisecondes_per_day (24 * 60 * 60 * 1000 millisecondes par jour)
Inclure:
(1) Convertir la valeur de l'unité de base, comme les millisecondes_per_seconds 1000 millisecondes par seconde.
(2) Convertir en valeur de base des secondes, telles que les secondes_per_day, le nombre de secondes par jour est de 24 * 60 * 60.
(3) Convertissez en valeur de base des millisecondes, telles que les millisecondes_per_day. Le nombre de millisecondes par jour est de 24 * 60 * 60 * 1000.
Pour une utilisation détaillée, vous pouvez afficher le code de test pertinent: xktimeConstantTest.
(1) Projet de fourche.
(2) Modifier dans la branche de développement.
(3) Soumettre la demande de traction.
(1) Des vacances courantes, telles que la journée du Nouvel An, le festival du printemps, le festival Qingming, la fête du travail, le festival de bateaux-dragon, le festival de mi-automne et d'autres vacances.
(2) Soutenu par les 24 termes solaires.