Pereiti prie pagrindinio turinio

Datų skirtumo skaičiuotuvas nemokamai

Apskaičiuokite tikslų skirtumą tarp dviejų datų — metais, mėnesiais, dienomis, savaitėmis, darbo dienomis (išskyrus savaitgalius), valandomis ir minutėmis.

Veikia neprisijungus, kai įkeliama

Greiti nustatymai

Pasirinkite abi datas, norėdami pamatyti skirtumą.

Dažniausi naudojimo būdai

  • Apskaičiuokite dienas iki dėl datosAtgal į kūdikio termino datą — sužinokite tiksliai, kiek savaičių, dienų ir valandų lieka iki didelio dienos.
  • Dienos iki jūsų atostogųAtgal į jūsų kelionę su darbinėmis dienomis, visomis dienomis ir likusiais savaitėm planavimui.
  • Darbinės dienos iki projekto terminoApskaičiuokite tikslų darbinių dienų skaičių (neįskaitant savaitgalių) tarp šiandien ir projekto termino.
  • Apskaičiuokite metinių dienas kartuSužinokite tiksliai, kiek dienų, mėnesių ir metų jūs esate kartu su kažkuo specialiu.
  • Amžiaus skirtumo skaičiuoklė tarp dviejų žmoniųApskaičiuokite tikslų amžiaus skirtumą tarp dviejų gimimo dienų — metų, mėnesio ir dienų atskyrimas.

Kaip tai veikia

Visas skaičiavimas vyksta visiškai naršyklėje, naudojant rankomis parašytą UTC aritmetiką — jokios išorinės bibliotekos, jokios serverio užklausos. Įrankis apdoroja YYYY-MM-DD eilutes į kalendorinius komponentus, apskaičiuoja skirtumus naudodamas Date.UTC() milisekundžių laiko žymas, kad išvengtų vasaros laiko poslinkio, ir iteruoja diena po dienos, kad suskaičiuotų pirmadienio–penktadienio darbo dienas.

  1. 1
    Saugus datos apdorojimas
    Kiekviena datos eilutė patikrinama reguliariuoju reiškiniu ir tada iš naujo sukonstruojama per Date.UTC() — ne per new Date(string) — todėl naudotojai į vakarus nuo UTC niekada nepamato savaitės dienos poslinkio, kurį sukelia naršyklės vietinės laiko juostos interpretacija, kai įvedama tik data.
  2. 2
    UTC milisekundžių atėmimas
    Abi kalendorinės datos paverčiamos UTC vidurnakčio laiko žymomis naudojant Date.UTC(y, m, d). Sveikojo skaičiaus dalyba iš 86 400 000 ms duoda tikslų pilnų dienų skaičių, kuriam nedaro įtakos vasaros laiko perėjimai, dėl kurių diena kitaip gali atrodyti 23 ar 25 valandų trukmės.
  3. 3
    Kalendorinis suskirstymas ir darbo dienų skaičius
    Rankomis parašytas metų/mėnesio/dienos skaidymas apdoroja mėnesio ilgio netolygumus (prireikus perimant dienas iš ankstesnio mėnesio). Atskiras ciklas žengia per kiekvieną UTC dieną tarp dviejų datų ir didina skaitiklį tik pirmadieniui–penktadieniui (getUTCDay() !== 0 arba 6), gaunant tikslią darbo dienų sumą, nepriklausomai nuo kalbos regiono.
  4. 4
    Rezultatai rodomi visais vienetais
    Bendros sumos formatuojamos naudojant toLocaleString(), taikant puslapio kalbos regioną skaitmenų grupavimui pagal kalbos regioną, tada vienu metu rodomos kaip metai/mėnesiai/dienos, bendros dienos, darbo dienos, savaitės, valandos ir minutės. Dabartinė datų pora įrašoma į URL per history.replaceState, todėl bet kokį rezultatą galima įsiminti ar juo pasidalyti kaip tiesiogine nuoroda.

Susiję įrankiai

Dažnai užduodami klausimai