Im Entwicklungsprozess von Java ist es unvermeidlich, sich mit dem Datumstyp zu verstricken. Ich werde die im Projekt häufig verwendeten datumsbezogenen Vorgänge zusammenfassen Aufstehen, herumlaufen und eine Tasse Kaffee kochen, das wird großartig sein, hehe. Natürlich biete ich nur praktikable Lösungen an und gebe keine Garantie für Best Practices. Diskussionen sind willkommen.
1. Datumswert
In der Ära der alten Version von JDK gab es viele Codes, die die Klasse java.util.Date verwendeten, um Datumswerte zu erhalten. aber aufgrund der Die Date-Klasse ist für die Internationalisierung nicht geeignet. Tatsächlich wird ab JDK1.1 eher empfohlen, die Klasse java.util.Calendar für die Zeit- und Datumsverarbeitung zu verwenden. Wir werden die Operationen der Date-Klasse hier nicht vorstellen. Kommen wir direkt zum Thema, wie man die Calendar-Klasse verwendet, um das aktuelle Datum und die aktuelle Uhrzeit zu erhalten.
Da die Konstruktormethode von Calendar geschützt ist, erstellen wir ein Calendar-Objekt über die in der API bereitgestellte getInstance-Methode.
//有多个重载方法创建 Calendar 对象 Calendar now = Calendar.getInstance(); //默认 //指定时区和地区,也可以只输入其中一个参数 Calendar now = Calendar.getInstance(timeZone, locale);
Dann können wir über dieses Objekt die aktuellen verschiedenen Zeitparameter abrufen.
int year = now.get(Calendar.YEAR); //,当前年份 int month = now.get(Calendar.MONTH) + ; //,当前月,注意加 int day = now.get(Calendar.DATE); //,当前日Date date = now.getTime(); //直接取得一个 Date 类型的日期
Um andere Arten von Zeitdaten zu erhalten, müssen Sie nur die Parameter in now.get() ändern. Zusätzlich zu den oben genannten drei Parametern sind weitere häufig verwendete Parameter wie folgt:
•Calendar.DAY_OF_MONTH: Datum, dasselbe wie Calendar.DATE
•Calendar.HOUR: Stunden im 12-Stunden-Format
•Calendar.HOUR_OF_DAY: Stunden im 24-Stunden-Format
•Calendar.MINUTE: Minuten
•Calendar.SECOND: Sekunden
•Calendar.DAY_OF_WEEK: Wochentag
Zusätzlich zum Abrufen von Zeitdaten können wir auch festlegen verschiedene Zeitparameter über das Calendar-Objekt.
//只设定某个字段的值 // public final void set(int field, int value) now.set(Calendar.YEAR, ); //设定年月日或者年月日时分或年月日时分秒 // public final void set(int year, int month, int date[, int hourOfDay, int minute, int second]) now.set(, , [, , , ]); //直接传入一个 Date 类型的日期 // public final void setTime(Date date) now.set(date);
Hinweis:
•Wenn der Zeitparameter festgelegt ist, werden andere verwandte Werte neu berechnet, beispielsweise wenn Sie das Datum festlegen bis zum 11., Der Wochentag ändert sich entsprechend.
•Fügen Sie 1 zum erhaltenen Monat hinzu, um den tatsächlichen Monat zu erhalten.
•In der Kalenderklasse ist Sonntag 1, Montag 2 und so weiter.
2. Datumskonvertierung
Nachdem wir über den Datumswert gesprochen haben, handelt es sich im Allgemeinen um die Interaktion zwischen Datumstyp und Zeichenfolge Bei der Konvertierung verwende ich hauptsächlich java.text.SimpleDateFormat für Konvertierungsvorgänge.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { //日期转字符串 Calendar calendar = Calendar.getInstance(); Date date = calendar.getTime(); String dateStringParse = sdf.format(date); //字符串转日期 String dateString = "-- ::"; Date dateParse = sdf.parse(dateString); } catch (ParseException e) { e.printStackTrace(); }
Hinweis:
•Das Konvertierungsformat muss beim Erstellen eines SimpleDateFormat-Objekts angegeben werden.
•Das Konvertierungsformat unterscheidet zwischen Groß- und Kleinschreibung, yyyy stellt das Jahr dar, MM stellt den Monat dar, dd stellt das Datum dar, HH stellt die Stunde im 24-Hexadezimalformat dar, hh stellt die Stunde im Hexadezimalformat dar, mm stellt dar die Minute, ss steht für Sekunde.
3. Datumsaddition und -subtraktion
Im Allgemeinen führen wir zwei Arten von Additions- und Subtraktionsoperationen an Datumsangaben durch:
• Mit einem bestimmten Datum wird ein Datum als Grundlage für die Berechnung der Tage davor/nachher, der Jahre davor/nachher oder der Daten vor und nach anderen Zeiteinheiten verwendet.
//根据现在时间计算 Calendar now = Calendar.getInstance(); now.add(Calendar.YEAR, ); //现在时间的年后 now.add(Calendar.YEAR, -); //现在时间的年前 //根据某个特定的时间 date (Date 型) 计算 Calendar specialDate = Calendar.getInstance(); specialDate.setTime(date); //注意在此处将 specialDate 的值改为特定日期 specialDate.add(Calendar.YEAR, ); //特定时间的年后 specialDate.add(Calendar.YEAR, -); //特定时间的年前
Beachten Sie, dass die Wird die Add-Methode des Calendar-Objekts verwendet, kann Calendar.YEAR in ein beliebiges Zeiteinheitenfeld geändert werden, um Datumsberechnungen in verschiedenen Zeiteinheiten durchzuführen.
• Berechnen Sie den Abstand zwischen zwei Zeitpunkten, berechnen Sie beispielsweise, wie viele Tage zwischen dem 1. Januar 2016 und jetzt liegen.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = "-- ::"; Calendar calendar = Calendar.getInstance(); long nowDate = calendar.getTime().getTime(); //Date.getTime() 获得毫秒型日期 try { long specialDate = sdf.parse(dateString).getTime(); long betweenDate = (specialDate - nowDate) / ( * * * ); //计算间隔多少天,则除以毫秒到天的转换公式 System.out.print(betweenDate); } catch (ParseException e) { e.printStackTrace(); }
4. Datumsvergleich
Beim Durchsehen meines vorherigen Codes stellte ich fest, dass dies bei jedem Auftritt der Fall war Datumsvergleich Während des Vorgangs wird das Datum immer in eine Zeichenfolge im Format „JJJJMMTT“ konvertiert, dann wird die Zeichenfolge in einen numerischen Wert umgewandelt und anschließend werden die numerischen Werte verglichen. Haha, eine einfache Vergleichsoperation erfordert das Schreiben von mehr als zehn Zeilen Code, was etwas überwältigend ist. Lassen Sie uns nun über die richtige Art und Weise sprechen, Daten zu vergleichen.
Im Allgemeinen gibt es zwei Methoden für den Datumsvergleich, die bei java.util.Date oder java.util.Calendar üblich sind. Eine besteht darin, mit den Methoden after () und before () zu vergleichen, und die andere darin, mit der Methode CompareTo () zu vergleichen.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString_01 = "2016-01-01 11:11:11"; String dateString_02 = "2016-01-02 11:11:11"; try { Date date_01 = sdf.parse(dateString_01); Date date_02 = sdf.parse(dateString_02); System.out.println(date_01.before(date_02)); //true,当 date_01 小于 date_02 时,为 true,否则为 false System.out.println(date_02.after(date_01)); //true,当 date_02 大于 date_01 时,为 true,否则为 false System.out.println(date_01.compareTo(date_02)); //-1,当 date_01 小于 date_02 时,为 -1 System.out.println(date_02.compareTo(date_01)); //1,当 date_02 大于 date_01 时,为 1 System.out.println(date_02.compareTo(date_02)); //0,当两个日期相等时,为 0 } catch (ParseException e) { e.printStackTrace(); }
Das Obige ist die vollständige Beschreibung der in diesem Artikel vorgestellten gängigen Datumsoperationen (Werterfassung, Konvertierung, Addition, Subtraktion, Vergleich).
Weitere Artikel zu gängigen Datumsoperationen in Java (Werterfassung, Konvertierung, Addition, Subtraktion, Vergleich) finden Sie auf der chinesischen PHP-Website!