קבל את התאריך הנוכחי לפני Java 8

1. הקדמה

במערכות מדור קודם, ייתכן שנצטרך לעבוד עם תאריכים שבהם לא ה- API החדש של תאריך ושעה חדש וגם לא ספריית Joda-Time המומלצת ביותר.

במדריך קצר זה, אנו נסתכל על כמה גישות לראות כיצד לקבל את התאריך הנוכחי במערכות לפני Java 8.

2. זמן מערכת

כאשר כל מה שאנחנו צריכים הוא ערך מספרי יחיד המייצג את התאריך והשעה הנוכחיים, אנו יכולים להשתמש בזמן המערכת. כדי לקבל את מספר האלפיות השנייה שעברו מאז 1 בינואר 1970 00:00:00 GMT אנחנו יכולים להשתמש ב- currentTimeMillis שיטה המחזירה א ארוך:

long elapsedMilliseconds = System.currentTimeMillis ();

כאשר אנו רוצים למדוד את הזמן שחלף בדיוק רב יותר, אנו יכולים להשתמש ב- nanoTime שיטה. זה יחזיר את ערך הננו-שניות שעברו מרגע קבוע אך שרירותי.

זמן שרירותי זה זהה לכל השיחות בתוך ה- JVM, ולכן הערך המוחזר שימושי רק לצורך חישוב ההבדל בננו-שניות שחלפו בין שיחות מרובות של nanoTime:

long elapsedNanosecondsStart = System.nanoTime (); long elapsedNanoseconds = System.nanoTime () - elapsedNanosecondsStart;

3. ה java.util חֲבִילָה

שימוש בשיעורים מה- java.util אנו יכולים לייצג רגע בזמן, בדרך כלל באלפיות השנייה שחלפו מאז 1 בינואר 1970 00:00:00 GMT.

3.1. java.util.Date

אנו יכולים לייצג תאריך ושעה ספציפיים באמצעות תַאֲרִיך לְהִתְנַגֵד. זה מכיל דיוק של אלפיות השנייה ומידע על אזור הזמן.

אמנם יש הרבה בונים זמינים, הדרך הפשוטה ביותר ליצור תַאֲרִיך האובייקט המייצג את התאריך הנוכחי באזור הזמן המקומי הוא להשתמש בבנאי הבסיסי:

תאריך currentUtilDate = תאריך חדש ();

בואו ניצור כעת a תַאֲרִיך התנגד לתאריך ושעה ספציפיים. נוכל להשתמש בבונים הנ"ל ופשוט להעביר את ערך האלפיות השנייה.

לחלופין, אנו יכולים להשתמש ב- SimpleDateFormat בכיתה להמיר א חוּט ערך בפועל תַאֲרִיך לְהִתְנַגֵד:

SimpleDateFormat dateFormatter = חדש SimpleDateFormat ("dd-MM-yyyy HH: mm: ss"); תאריך customUtilDate = dateFormatter.parse ("30-01-2020 10:11:12");

אנו יכולים להשתמש במגוון רחב של דפוסי תאריכים בהתאם לצרכים שלנו.

3.2. java.util.Calendar

א לוּחַ שָׁנָה אובייקט יכול לעשות מה תַאֲרִיך עושה, וזה עדיף לחישובי חשבון תאריכים מכיוון שהוא יכול לקחת גם אזור. אנחנו יכולים לציין את אזור כאזור גיאוגרפי, פוליטי או תרבותי.

כדי לקבל את התאריך הנוכחי, ללא אזור זמן אוֹ אזור שצוין, אנו יכולים להשתמש ב- getInstance שיטה:

לוח שנה currentUtilCalendar = Calendar.getInstance ();

ועבור לוּחַ שָׁנָה ל תַאֲרִיך המרה, אנו יכולים פשוט להשתמש ב- getTime שיטה:

תאריך currentDate = Calendar.getInstance (). GetTime ();

כעובדה מהנה, לוח השנה הגרגוריאני class הוא יישום לוח השנה הנפוץ ביותר בעולם.

4. ה java.sql חֲבִילָה

לאחר מכן, נבדוק שלוש הרחבות של ה- java.util.Date מחלקה המייצגת את אובייקטי ה- SQL המקבילים.

4.1. java.sql.Date

עם java.sql.Date לְהִתְנַגֵד, אין לנו גישה למידע על אזור הזמן, והדיוק נקטע ברמת היום. כדי לייצג את היום, נוכל להשתמש בבנאי שלוקח a ארוך ייצוג של אלפיות השנייה:

תאריך currentSqlDate = תאריך חדש (System.currentTimeMillis ());

כמו בעבר, לתאריך מסוים אנו יכולים להשתמש ב- SimpleDateFormat בכיתה להמיר לא java.util.Date ראשית ואז קבל את אלפיות השנייה באמצעות getTime שיטה. לאחר מכן נוכל להעביר ערך זה ל- java.sql.Date בַּנַאִי.

אנחנו יכולים פשוט להשתמש ב- ערך של שיטה כאשר חוּט ייצוג של תַאֲרִיך תואם את יאיי- [מ] מ- [ד] ד תבנית:

תאריך customSqlDate = Date.valueOf ("30/01/2020");

4.2. java.sql.Time

ה java.sql.Time מציע חפץ גישה למידע השעה, הדקה והשנייה - שוב, ללא גישה לאזור זמן. בואו נקבל את הזרם זְמַן באמצעות ייצוג של אלפיות השנייה:

זמן currentSqlTime = זמן חדש (System.currentTimeMillis ());

כדי לציין זמן באמצעות ערך של אנו יכולים להעביר ערך התואם ל- hh: mm: ss תבנית:

זמן customSqlTime = Time.valueOf ("10:11:12");

4.3. java.sql. חותמת זמן

בחלק האחרון הזה נשלב את שני ה- SQL תַאֲרִיך ו זְמַן מידע באמצעות חותמת זמן מעמד. זה מאפשר לנו לקבל דיוק עד ננו שניות.

בואו ניצור a חותמת זמן חפץ על ידי העברת שוב א ארוך ערך למספר האלפיות השנייה הנוכחי לבנאי:

חותמת זמן currentSqlTimestamp = חותמת זמן חדשה (System.currentTimeMillis ());

לבסוף, בואו ניצור מנהג חדש חותמת זמן משתמש ב ערך של שיטה עם הנדרש yyyy- [m] m- [d] d hh: mm: ss [.f ...] תבנית:

חותמת זמן customSqlTimestamp = Timestamp.valueOf ("2020-1-30 10: 11: 12.123456789");

5. מסקנה

במדריך קצר זה, ראינו כיצד להשיג את התאריך הנוכחי ואת התאריך לרגע נתון ללא שימוש ב- Java 8 או בספריות חיצוניות כלשהן.

כמו תמיד, הקוד של המאמר זמין באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found