XK-Time ist ein Tool für Zeitkonvertierung, Zeitberechnung, Zeitformatierung, Zeitspeicherung, Kalender, Zeit-Cron-Ausdruck und Zeit NLP usw. Es wird Java8, Thread-Safe, einfach zu bedienende und mehr als 70 gemeinsame Datum-Formatierungsvorlagen verwendet, JAVA8-Zeitklasse und -Datum, leichte, ohne Drittanbieter-Abhängigkeiten unterstützen.
<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'
XK-Time Toolkit verwendet Java8-API, darunter Sofort, LocalDate, LocalDatetime, LocalTime, ZonedDatetime usw. sind alle mit Thread-sicheren Klassen und reichere Methoden wurden hinzugefügt. Auf dieser Basis werden zugehörige Werkzeugkurse entwickelt, um sie mit Gewinde sicherer zu machen, sodass sie bequemer zu bedienen sind.
XK-Time-Toolkit, die obigen Funktionen werden gemäß Zeitumwandlung, Zeitberechnung sowie Zeitformatierung und Analyse in 3 Werkzeugklassen unterteilt: DateTimeConverTil, DateTimeCalculatorutil und DateTimeFormatterutil. Jede Klasse hat nur eine Funktion zur einfachen Verwendung.
2.4.1 Die Implementierung von Joda-Time- und Java8-Zeitpaketen ist im Grunde genommen gleich, beide dominiert von Stephen Colebourne. Ab JAVA8 wird empfohlen, das Java8-Zeitpaket zu verwenden, um Joda-Zeit zu ersetzen.
2.4.2 XK-Zeit basiert auf der Java 8-Datum-API und ist ein ergänzendes Instrument, ähnlich wie beim vorherigen Datum.
(1) Die Java8-Klassenbibliothek wird vertikal auf hierarchischer Ebene implementiert, während die XK-Zeit nach allgemeinen Funktionen wie Umwandlung, Berechnung, Formatierung und Analyse in 3 Klassen unterteilt ist.
.
(3) XK-Zeit-Implementierung Die häufig verwendeten Funktionen von Datumutil gemäß der Java 8-API, und gleichzeitig werden einige Erweiterungen für bequemere Verwendung hergestellt.
Enthalten:
.
(2) Zeiteinheiten wie Tage, Stunden, Minuten, Sekunden und Millisekunden werden zueinander umgewandelt und unterstützen die genaue Umwandlung kleiner Einheiten in große Einheiten. Zum Beispiel minutetohourpecise (lange Num) 90 Minuten bis Stunden, was 1,5 Stunden beträgt.
(3) Umwandlung von ZonedDatetime und unterstützt die Konvertierung in eine bestimmte Zeitzone wie tzoneddatetime (Datum, String zoneId) und tzoneddatetimeinndtransformzone (LocalDatetime LocalDatetime, String TargetzonId).
Beachten Sie, dass Sie für zonedDatetime -bezogene Konvertierungen, insbesondere für andere Zeitkonvertierungen in ZonedDatetime, auf die Konsistenz der Zeit und die entsprechende Zeitzone achten sollten.
Für eine detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: datetimeConverTeTiltest.
enthalten:
(1) Erhalten Sie die Zeitattributmethode (unterstützt Jahr, Monat, Stunde, Minute, Millisekunden, Woche, Zeitstempel usw.), erhalten Sie* zum Beispiel Getyear (Datum Datum) Erhalten Sie das Jahr Teil, GetMonthcnlong (Datum Datum) Holen Sie sich den Monat Chinesisch, Getdayofweekcn (Datum Datum), Get die Woche Chinese.
(2) Erhalten Sie die Zeitplus -Betriebsmethode zuzüglich* beispielsweise beispielsweise die Plus der Zeit (Datum, langer Anbieter). Erhöhen Sie im laufenden Zeitjahr den Teiloadd -Wert.
(3) Erhalten Sie die Zeitvertrockungsbetriebsmethode abzüglich* beispielsweise minus (Datum, langer Anbieter). Der aktuelle Zeitjahr verringert den Wert des Parlamentsblocks.
(4) Erhalten Sie die Zeitmodifikations -Attributmethode mit* beispielsweise mit year (Datum, langer NewValue), um den aktuellen Zeit- und Jahreswert für NewValue zu ändern.
(5) 2 -mal vergleichen, um zwischen* zwischen* zwischen den Tagen (Datum startinklusiv, Datum endExclusive) zu vergleichen, um die Gesamtzahl der Tage zurückzugeben.
(6) Andere gemeinsame Methoden wie Isleapyear (Datum Datum), um festzustellen, ob es sich um ein Schaltjahr handelt, isWeekend (Datum), um festzustellen, ob es sich um ein Wochenende handelt, iSexpiry (String Yearmonthstr) zum Auslaufen usw.
(7) Zeitzonenkonvertierungsberechnungsmethode, Transformation*, wie z.
(8) Vergleichen Sie 2 Mal und Gleichstellungsmethoden, vergleichen Sie*, z. B. vergleichen (Datum 1, Datum 2).
(9) Erhalten Sie die genaue Startzeitmethode, Start*, End*, z. EndaCuracytimeof*, genau auf Millisekunden (Datum), genau auf Nanosekunden (localDatetime).
(10) Methoden zum Vergleich und zur Beurteilung desselben Monats und des gleichen Tages, Issammonemonthday*, zwischenNextsammonemeDay*, Nächstermonatetag*, zum Beispiel für periodische Vergleichsurteile wie Geburtstage, Festivals usw.
(11) Konstellationsberechnungsmethode, GetConstellation*, z.
(12) Berechnen Sie die Zeitliste des angegebenen Jahres und des Monats oder des Startzeitintervalls, erhalten Sie*Liste wie GetDatelist (int Jahr, int Monats), berechnet die Zeitliste des angegebenen Jahres und Monat.
(13) Methode zur Reduzierung der Zeitgenauigkeit, ReduceAccuracyto*, z.
(14) Holen Sie sich die Zeitstempelmethode, GetePoch*, zum Beispiel GetePochMilli () erhält den Zeitstempel, GetePochMilliformat () erhält die Timestamp-Format-Saite (yyyy-mm-dd hh: mm: ss)
(15) Altersberechnungsmethode, Getage*wie Getage (Datum Geburtstag), berechnet das Alter nach Geburtstag.
(16) Methode zur Bestimmung, ob der Geburtstag hier ist.
(17) Wie berechnet man die Anzahl der Wochen, Weekof*, wie z.
(18) Bestimmen Sie, ob die Montag- und Freitags -Methode, IsMonday*, Iszhouyi*, wie Iszhouyi (Datum), isMonday.
(19) Die zwölf Stunden Berechnungsmethode, GetTwelvetwo*, wie GetTwelvetwo (Datum), erhalten Sie die zwölf Stunden, die der angegebenen Zeit entsprechen.
(20) Viertelberechnungsmethode, GetQuarter*, z. B. GetQuarter (Datum), erhalten Sie das Quartal, das der angegebenen Zeit entspricht.
(21) Erhalten Sie die genaue Ausgangszeitmethode für das Quartal (vier Viertel), StartTimeof*Quartal, z.
(22) Erhalten Sie die genaue Startzeitmethode des Jahres, StartTimeOfyear, wie z.
(23) häufig gebrauchte Zeit (morgen, nächste Woche, nächsten Monat, nächstes Jahr usw.) Berechnungsmethoden, wie z. B. morgen (), morgen berechnen und Datum zurückgeben.
(24) Ändern Sie die Wochenwertmethode mit Dayofweek*, z.
(25) Berechnung des Arbeitstages am Arbeitstag (einschließlich Feiertagsinformationen), einschließlich Methoden wie der Feststellung, ob das aktuelle Datum ein Arbeitstag und der nächste Arbeitstag ist, Isschineseworkday*, NextChineseworkday*,,
Zum Beispiel Ischineseworkday (Datum, String HolidayData), NextChineseworkday (Datum Datum, String HolidayData),
Urlaubsdaten, wenn die Feiertagsdaten das Jahr nicht unterstützen, wird sie von Montag bis Freitag als Arbeitstage beurteilt. Nachfolgend finden Sie die Urlaubsinformationen, die ich für 2021 zusammengestellt habe:
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) Bestimmen Sie, ob eine Überlappungsmethode (Kreuzung) für 2 oder mehr Zeiträume vorhanden ist, Isoverlap*, wie z.
(27) Methode zur Berechnung der durchschnittlichen Zeit, durchschnittlich*, wie beispielsweise Averagetime (List Datelist), gibt die durchschnittliche Zeit wie "15:03:03" zurück.
(28) Berechnen Sie die Countdown -Methode basierend auf dem Millisekundenwert, unterstützt die eingehenden Zeitobjekte und angegebenen Formate, Countdown*wie Countdown (Long Millis), und gibt den Countdown zurück, z. B. "27 Stunden, 10 Minuten, 30 Sekunden".
(29) Erhalten Sie die Formatierungszeitlistenmethode für das angegebene Intervall, z.
(30) Berechnen Sie die Zeitmethode für Überlappung (Kreuzung) von 2 Zeiträumen, wie z.
Für die detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: DateTimeCalculatorutiltest.
Enthält gemeinsame Datumsformate wie:
yjyy-mm-dd
HH: MM: SS
yjyy-mm-dd hh: mm: ss
yjyy-mm-dd hh: mm: ss.ssss
yjyy-mm-dd hh: mm: ss.ssssssssss
yyyy-mm-dd hh: mm: ss.ssssssssssssssss
yyyy-mm-dd't'hh: mm: ssz usw. unterstützt genaue Zeiten wie Millisekunden, Mikrosekunden und Nanosekunden.
(1) Formatmethode, Format*, wie z. B. formattodateStr (Datum), gibt den Datumsteil zurück, wie z. B.: yyyy-mm-dd;
Format (Datum Datum, datetimeFormatter Formatierer) Formatierer Sie können ein definiertes Formatierer wie yyyy_mm_dd_hh_mm_ss_fmt (yyyy-mm-dd hh: mm: ss) Formatierungsdatum auswählen.
(2) analytische Methode, analysieren*, wie z. B. analysiert (Stringtext), das Datum yyyy-mm-dd, Rückgabedatum;
Parsetodat (Stringtext, DateTimeFormatter -Formatierer) nach Formatierer analysieren.
(3) Automatische Parsingmethode, automatisch erkennen und analysieren Sie die Eigenschaften der Zeichenfolge, SmartParse*, wie SmartParSetodate (String -Text) automatisch das Datum.
(4) Die automatische Parsingmethode für das ISO -Format (einschließlich T) wird automatisch anerkannt und gemäß den Eigenschaften der Zeichenfolge analysiert. Parseiso*, wie ParSeisotodat (String -Text), Parsedatum automatisch.
(5) Analyse des Zeitstempelmethode, Parseepochmilli*, wie Parseepochmillitodat (Stringtext), das Parsing -Zeitstempel ist Datum, z. B. 1590224790000.
(6) Das Standardformat des Datums analysieren, analysiert, wie beispielsweise ansparsedatedEfaultStrtodate (String -Text)
Analysieren Sie eee mmm dd hh: mm: ss zzz yyyy zum Beispiel: sa 23. Mai 17:06:30 cst 2020 ist Datum.
(7) Methoden für benutzerdefinierte Zeitzonenformatierungsmethoden wie Format (Datum Datum, datetimeFormatter Formatierer, String zoneId), Formatdatum gemäß ZoneId.
(8) Passen Sie die Template -Formatierungsmethode an, z. B. das Format (Datum, String dateFormatPattern), Formatdatum nach DatumFormatpattern.
(9) Methoden für benutzerdefinierte Vorlagen Parsingmethoden wie Parsetodat (String -Text, String dateFormatpatpattern), Formatdatum nach DatumFormatpattern.
(10) Timestempel-Standardformat (yyyy-mm-dd hh: mm: ss.ffffffffffff, wobei FFFFFFFF-Nanosekunden die folgende 0) Formatierungsmethode weglassen.
Zum Beispiel FormattimestampStyle (Datum Datum).
(11) Timestempel-Standardformat (Yyyy-MM-DD HH: MM: ss.ffffffffffffFF, wobei ffffffffff nanosekunden ist und die folgenden 0 weglassen).
Zum Beispiel Paretimestampstyletodat (String -Text).
(12) Methoden zur Überprüfung, ob das Datumsformat korrekt ist, isvaliddate*wie Isvaliddate (Stringtext), stellen Sie sicher, ob die Zeichenfolge von YYYY-MM-DD-Format korrekt ist.
(13) Gemäß der maßgeschneiderten Vorlagenarray -Parsen -Methode wie Parsetodat (String -Text, String [] DateFormatpatterns) unterstützt DateFormatPatterns mehrere Vorlagen und solange eines der Parsen erfolgreich ist, wird das entsprechende Datum zurückgegeben.
(14) Analysieren Sie die natürliche Sprachzeit, heute, morgen, nächste Woche, nächsten Monat, nächstes Jahr, gestern, letzte Woche, letzten Monat, letzten Jahr usw. wie Parsenaturallanguagetodat (String -Text),
Parsenaturallanguagetodat (String Text, Map <String, String> naturallanguagemap) unterstützt benutzerdefinierte Parsen natürliche Sprachzeitkarten.
(15) Chinesische Datumsformatierungsmethoden wie Formattochinedatestern (Datum des Datums, Boolean Isuppercase), Isuppercase Falsch: 11. September 2021 Richtig: 11. September 2021.
(16) Methoden zur chinesischen Datumsanalyse wie ParSechinedatestrtodate (Stringtext), Unterstützung: 11. September 2021 und 11. September 2021 Formatdatumanalyse.
HINWEIS: Wenn Sie unterschiedliche Zeiten aus der Systemzeitzone formatieren und analysieren, verwenden Sie eine benutzerdefinierte Zeitzonenformatierungsmethode, oder Sie können die mit Zone -Methode verwenden, um die Zeitzone zurückzusetzen, z. B.:
Yyyy_mm_dd_hh_mm_ss_sss_fmt.withzone (zoneId.of ("Europa/Paris").
Für die detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: datetimeFormatterTiltest.
enthalten:
(1) Generieren Sie einen Kalender für die angegebene Zeit (Kalender mit der Hierarchie von Jahr, Monat und Tag). GenerateCalendar* zum Beispiel generiert GenerateCalendar (int Jahr, int Monats) einen Kalender für das angegebene Jahr und Monat.
. Kalender des angegebenen Jahr und Monat, einschließlich des Mondkalenders und aller Urlaubsinformationen, und Feiertage und Arbeitstage usw. anpassen können.
Für eine detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: CalendarUtiltest.
Enthalten:
(1) Berechnung von Monddatum, Jahr, Monat und Tag.
(2) Berechnen Sie die Tierkreiszeichen während des Mondkalenders.
(3) Berechnung der vierundzwanzig Solarbegriffe usw. (4) Anmerkungen zum Mondkalender zum gregorianischen Kalender: Nur die Umwandlung von Mondkalendern im Gregorianischen Kalender von 1900 bis 2100 wird unterstützt.
Für die detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: lunardatetest.
Enthalten:
(1) Berechnen Sie die Gregorianischen Feiertage, GetLocalHoliday* Zum Beispiel GetLocalHoughiday (Datum) berechnet die Gregorianischen Feiertage des Datums, getLocalHeiday (Datum, Karte <String, String> localHolidaymap) können benutzerdefinierte Gregorian -Feiertagsdaten übergeben.
.
(3) Berechnung der vierundzwanzig Solarbegriffe, GetSolarterm* beispielsweise GetSolarterm (Datum Datum) berechnet die vierundzwanzig Solarbedingungen des Datums.
Hinweis: Lunardate wird im Mondkalender und im vierundzwanzig Solarbegriff verwendet und unterstützt nur die Berechnungen der 1900-2100 Jahre des Gregorianischen Kalenders.
Sie können die entsprechenden Testcodes für eine detaillierte Verwendung anzeigen.
CRON-Ausdruck von links nach rechts (durch Leerzeichen getrennt): Sekunden (0-59) Minuten (0-59) Stunden (0-23) Datum (1-31) Monat (Ganzzahl von 1-12 oder Jan.-Dec) Woche (Zahlung von 1-7 oder Sun-Sa (1 = Sun)) Jahr (optional, 1970-2099)
Sonderzeichen können für alle Felder verwendet werden: - * / sind Aufzählung, Bereich, willkürliche, Intervalldaten und andere:? LW ist ein beliebiger, letztes, gültiger Arbeitstag (Montag bis Freitag)
Sie können auch die Woche verwenden :? L # ist jeder und schließlich wird der Cron -Ausdruck in der Woche eines jeden Monats üblicherweise verwendet:
(1) 0 0 2 1 *? * Zeigt am 1. des Monats (2) 0 15 10 um 2 Uhr morgens an. * Mon-Fr zeigt an, dass die Aufgabe von Montag bis Freitag (3) 0 15 10 um 10:15 Uhr durchgeführt wird? * 6L 2002-2006 zeigt an, dass die Aufgabe am letzten Freitag des Monats von 2002 bis 2006 (4) 0 0/30 9-17 * * am letzten Freitag im Monat um 10:15 Uhr durchgeführt wird? Zeigt jede halbe Stunde an (5) 0 15 10 l *? Zeigt an, dass am letzten Tag eines jeden Monats um 10:15 Uhr ausgelöst wird (6) 0 15 10? * 6#3 gibt am dritten Freitag eines jeden Monats um 10:15 Uhr an. (6) 0 15 10? * 6#3 zeigt am dritten Freitag eines jeden Monats um 10:15 Uhr an (4) 0 0/30 9-17 * *? Zeigt jede halbe Stunde an (5) 0 15 10 l *? Zeigt an, dass am letzten Tag eines jeden Monats um 10:15 Uhr ausgelöst wird (6) 0 15 10? * 6#3 gibt am dritten Freitag eines jeden Monats um 10:15 Uhr an. (6) 0 15 10? * 6#3 gibt am dritten Freitag eines jeden Monats um 10:15 Uhr an. (6) 0 15 10? *
Enthält (1) Validierung und Formatierung von Cron -Expressionsmethoden, Isvalidexpression und Formatexpression.
(2) Generieren Sie die nächsten oder mehr Ausführungszeitmethoden, GetNextTime und GetNextTimelist.
(3) Generieren Sie die Methode zur Datumsformatierung (YJJJ-MM-DD HH: MM: SS) der nächsten Ausführungszeit, GetNextTimestern und GetNextTimestrist.
(4) Vergleichen Sie, ob die nächste Ausführungszeit des Cron -Ausdrucks der angegebenen Datumsmethode entspricht, issificdy.
Hinweis: Die zugrunde liegende Ebene verwendet die Cronexpression -Verarbeitung von Quartz.
Für eine detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: cronexpressionutiltest.
Berechnung des zeitaufwändigen Tools, unterstützt Sekunden, Millisekunden, Nanosekunden
enthalten:
(1) Die Berechnung erfordert Zeit und gibt zeitaufwändige Ergebnisse zurück.
(2) Die Berechnung dauert Zeit, passen Sie den Aufgabenamen an und die Ausgabe zeitaufwändiger Ergebnisse.
(3) Berechnungszeit, das genaue Timing mit 3 Dezimalstellen zurückgeben, verwenden Sie Round_down, um die Dezimalenteile zu verwerfen, die 3 Ziffern überschreiten, usw.
Für eine detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: costuitltest.
Beinhaltet Funktionen:
(1) Analysieren Sie die natürliche Zeitsprache anhand der aktuellen Zeit.
(2) Analysieren Sie die natürliche Zeitsprache anhand der angegebenen Zeit.
(3) Fügen Sie eine Vielzahl von Aufrufmethoden hinzu, z.
Modifiziert von https://github.com/shinyke/time-nlp
Einige Änderungen wurden wie folgt vorgenommen:
(1) Kapitulieren Sie die Attribute und benennen Sie sie um, um die Kamel -Namensstandards einzuhalten.
(2) Ändern Sie die Ladedatei der regulären Ressourcen in Singleton Loading.
(3) Umschüsse in getrennten Klassen nach ihren Funktionen umzuwandeln.
(4) Schreiben Sie mit Java 8 Date API um.
(5) Kommentare hinzufügen und den Code optimieren.
(6) Reparieren Sie das Problem im Originalprojekt: Standardzeit YYYY-MM-DD, YYYY-MM-DD HH: MM: SS und JYYY-MM-DD HH: MM-Analyseprobleme.
(7) Beheben Sie das Problem im ursprünglichen Projekt: 1 Stunde, 1einhalb Stunden, 1 Stunde und 50 Minuten und andere Analyseprobleme; und unterstützen Sie es bis zu Sekunden, z. B. 50 Sekunden, 10 Minuten und 30 Sekunden.
(8) Reparieren Sie das Problem im ursprünglichen Projekt: Die aktuelle Reparaturzeit beträgt 10 Uhr. Daher wird morgen drei PM als Problem von drei PM identifiziert.
(9) Problem im ursprünglichen Projekt beheben: Beheben Sie das Ausnahmeproblem der Dezimalauflösung.
(10) Leistungsoptimierung, vorkompilieren die verwendeten Regelmäßigkeiten und setzen Sie sie in den Cache ein und verwenden Sie sie beim nächsten Mal direkt, um die Leistung zu verbessern.
Hinweis: NLP hat eine bestimmte Erkennungsausfallrate und wird die Erfolgsquote weiterhin iterieren und verbessern.
Diese Funktion ist nicht in der Mini -Version enthalten.
Für eine detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: timenlputiltest.
Zeiteinheitskonstanten, die die Berechnung der Einheitsumwandlung erleichtern, z.
Enthalten:
(1) Konvertieren Sie den Wert der Grundeinheit wie Milliseconds_Per_sekunden 1000 Millisekunden pro Sekunde.
(2) Konvertieren Sie den Grundwert von Sekunden, wie z. B. Sekunden_Per_Day Die Anzahl der Sekunden pro Tag beträgt 24*60*60.
(3) Konvertieren Sie den Grundwert von Millisekunden wie Millisekunden_Per_Day. Die Anzahl der Millisekunden pro Tag beträgt 24*60*60*1000.
Für eine detaillierte Verwendung können Sie den entsprechenden Testcode anzeigen: xKTimeConstantTest.
(1) Fork -Projekt.
(2) im Entwicklungszweig ändern.
(3) Pull -Anfrage einreichen.
.
(2) unterstützt durch die 24 Solarbegriffe.