Κοινή χρήση τεχνολογίας

Το μέλλον της επεξεργασίας χρόνου: Μια πλήρης ανάλυση του νέου API ημερομηνίας και ώρας της Java 8

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Εισαγάγετε την περιγραφή της εικόνας εδώ

1. Βελτιώστε το φόντο

Η Java 8 έχει βελτιώσει πλήρως την επεξεργασία του χρόνου και έχει επανασχεδιάσει όλα τα API ημερομηνίας και ώρας, ημερολογίου και χρόνου. Και τοποθετήστε τα ομοιόμορφα κάτω από το πακέτο και το υπο-πακέτο java.time.

Μειονεκτήματα της Java5

  1. Δεν είναι ασφαλές με νήμαjava.util.Date Δεν είναι ασφαλές για νήματα και πρέπει να χειρίζεστε μόνοι σας ζητήματα ταυτόχρονης χρήσης πολλαπλών νημάτων όταν χρησιμοποιείτε αυτήν την κλάση.
  2. Κακή σχεδίαση :Η μορφοποίηση ημερομηνίας και ημερομηνίας διανέμεται σε πολλά πακέτα,java.util.Date Η προεπιλεγμένη ημερομηνία, έτος είναι από1900Έναρξη, μήνα από 1 έναρξη, ημέρα από 0 Αρχικά, δεν υπάρχει ομοιομορφία.καιDate Η τάξη δεν διαθέτει επίσης σχετικές μεθόδους για τον άμεσο χειρισμό ημερομηνιών.
  3. Δυσκολία χειρισμού ζωνών ώρας: Έπρεπε να γράψω πολύ κώδικα για να χειριστώ ζητήματα ζώνης ώρας λόγω κακής σχεδίασης.

Σχέδιο βελτίωσης για Java8

  1. Ασφάλεια νήματος: νέα ημερομηνία και ώραAPIΕίναι ασφαλές για το νήμα όχι μόνο δεν είναιsetterμέθοδος και οποιεσδήποτε αλλαγές στο στιγμιότυπο θα επιστρέψουν ένα νέο στιγμιότυπο, διασφαλίζοντας παράλληλα ότι το αρχικό στιγμιότυπο παραμένει αμετάβλητο.
  2. Ημερομηνία τροποποίησης: Το νέο API ημερομηνίας και ώρας παρέχει έναν μεγάλο αριθμό μεθόδων για την τροποποίηση διαφόρων τμημάτων της ημερομηνίας και της ώρας και την επιστροφή μιας νέας παρουσίας.
  3. περιοχή: Όσον αφορά τις ζώνες ώρας, το νέο API ημερομηνίας και ώρας εισάγει την έννοια των τομέων.
  4. Διαχωρισμός χαρτοφυλακίου: Το αρχικό σύνθετο API αναδιοργανώθηκε και χωρίστηκε σε διάφορες κατηγορίες.

2. Τοπική ημερομηνία και ώρα

  1. ΤοπικήΗμερομηνία: Χρησιμοποιείται για την αναπαράσταση μιας ημερομηνίας χωρίς ζώνη ώρας, για παράδειγμα: 2024-07-06.

    import java.time.LocalDate;
    import java.time.Month;
    
    public class LocalDateExample {
        public static void main(String[] args) {
            // 获取当前日期
            LocalDate today = LocalDate.now();
            System.out.println("当前日期: "   today);
    
            // 创建指定日期
            LocalDate specificDate = LocalDate.of(2024, Month.JULY, 6);
            System.out.println("指定日期: "   specificDate);
    
            // 日期操作示例
            LocalDate tomorrow = today.plusDays(1);
            System.out.println("明天的日期: "   tomorrow);
        }
    }
    
    // 输出
    当前日期: 2024-07-06
    指定日期: 2024-07-06
    明天的日期: 2024-07-07