Teknologian jakaminen

Ajankäsittelyn tulevaisuus: Java 8:n uuden päivämäärän ja ajan API:n täydellinen analyysi

2024-07-11

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

Lisää kuvan kuvaus tähän

1. Paranna taustaa

Java 8 on kattavasti parantanut ajankäsittelyä ja suunnitellut uudelleen kaikki päivämäärään ja kellonaikaan, kalenteriin ja aikaan liittyvät API:t. Ja aseta ne tasaisesti java.time-paketin ja alipakettien alle.

Java5:n haitat

  1. Ei lankaturvallinenjava.util.Date Se ei ole säikeille turvallinen, ja sinun on käsiteltävä monisäikeiset samanaikaisuusongelmat itse, kun käytät tätä luokkaa.
  2. Huono suunnittelu :Päivämäärä ja päivämäärän muotoilu on jaettu useisiin pakkauksiin,java.util.Date Oletuspäivämäärä, vuosi on alkaen1900Aloitus, kuukausi alkaen 1 alku, päivä alkaen 0 Aluksi ei ole yhtenäisyyttä.jaDate Luokasta puuttuu myös liittyviä menetelmiä päivämäärän suoraan manipuloimiseksi.
  3. Vaikeus käsitellä aikavyöhykkeitä: Piti kirjoittaa paljon koodia käsitelläkseen aikavyöhyke-ongelmia huonon suunnittelun vuoksi.

Java8:n parannussuunnitelma

  1. Langan turvallisuus: uusi päivämäärä ja aikaAPIOnko lankaturvallinen paitsi eisettermenetelmä, ja kaikki ilmentymän muutokset palauttavat uuden ilmentymän samalla, kun varmistetaan, että alkuperäinen ilmentymä pysyy muuttumattomana.
  2. Muokkauspäivämäärä: Uusi päivämäärä ja aika -sovellusliittymä tarjoaa lukuisia menetelmiä päivämäärän ja kellonajan eri osien muokkaamiseen ja uuden esiintymän palauttamiseen.
  3. alueella: Aikavyöhykkeiden osalta uusi päivämäärä ja aika -sovellusliittymä esittelee verkkotunnusten käsitteen.
  4. Portfolion jako: Alkuperäinen monimutkainen API järjestettiin uudelleen ja jaettiin useisiin luokkiin.

2. Paikallinen päivämäärä ja aika

  1. LocalDate: Käytetään kuvaamaan päivämäärää ilman aikavyöhykettä, esimerkiksi: 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