Pobierana zła data przez new Date()

0

Witam. Wie ktoś może dlaczego new Date() pobiera złą datę i skąd ją pobiera ? Wyświetla datę '06.01.2020' a jest '01.02.2020' z góry dzięki :)

import React, { Component } from 'react';


class DateTime extends Component {

  state = {
    time: new Date(),
    date: new Date(),
  }

  componentDidMount = () => {
    setInterval(() => {
      this.setState({
        time: new Date(),
        date: new Date(),
      })
    }, 1000)
  }

  render() {
    const minutes = this.state.time.getMinutes();
    const hours = this.state.time.getHours();
    const day = this.state.date.getDay();
    const month = this.state.date.getMonth();
    const year = this.state.date.getFullYear();
    return (
      <div>
        <div className="time">{`${hours < 10 ? "0" + hours : hours}:${minutes < 10 ? "0" + minutes : minutes}`}</div>
        <div className="date">{`${day < 10 ? "0" + day : day}.${month < 10 ? "0" + month : month}.${year}`}</div>
      </div>
    )
  }
}

export default DateTime;
3

Proponuję nie używać rzeczy, których się nie rozumie. To ułatwi zrozumienie tematu. Funkcja getDay prototypu Date zwraca numer dnia tygodnia. Zwraca 6, ponieważ sobota to 6 dzień tygodnia (niedziela to dzień 0 tygodnia). Z kolei metoda getMonth zwraca numer miesiąca, numerowany od 0 czyli styczeń to miesiąc 0, a luty to miesiąc 1.

Czyli wszystko działa prawidłowo, tylko:
title

0
Haskell napisał(a):

Proponuję nie używać rzeczy, których się nie rozumie. To ułatwi zrozumienie tematu. Funkcja getDay prototypu Date zwraca numer dnia tygodnia. Zwraca 6, ponieważ sobota to 6 dzień tygodnia (niedziela to dzień 0 tygodnia). Z kolei metoda getMonth zwraca numer miesiąca, numerowany od 0 czyli styczeń to miesiąc 0, a luty to miesiąc 1.

Czyli wszystko działa prawidłowo, tylko:
title

Czyli dobrze, że tego użyłem, bo teraz wiem do czego służy :) dzięki wielkie

3

Tutaj widzimy, jak ważne jak poprawne tytułowanie wątków i nie przyjmowanie za pewnik rzeczy, które nam się wydają.

  1. wątek wprowadza w błąd (powinno być metoda getDay() zwraca 6 zamiast 1, bo to robisz. Oczekujesz, że getDay zwróci 1, a zwróciło 6). Ja widząc ten wątek (nie czytając kodu) na serio już pomyślałem o dacie, że pewnie masz złą datę nastawioną w kompie czy coś. A jednak jak się spojrzy w kod (co zrobił przedmówca) widać, że chodzi o co innego (może sam też byś to dostrzegł, jakbyś sformułował dobrze problem).

  2. zakładasz wiele rzeczy naraz (czyli płynnie przechodzisz od tego, że getDay coś źle zwraca do tego, że new Date ci złą datę pokazuje, co jest błędem w rozumowaniu).

Nie piszę tego, żeby się czepiać, tylko żeby pokazać, że następnym razem możesz sam usiąść i zamiast zakładać, że Date źle zwraca datę, to zobaczyć, co faktycznie robisz i sprawdzić swoje założenia (np. założenia pod tym, że JS jest logicznym językiem i że "getDay" zwróci ci dzień miesiąca. Otóż nie - obiekt Date to najbardziej porąbana część JSa, więc tak jak przedmówca napisał - to dzień tygodnia) np. patrząc na MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay

1 użytkowników online, w tym zalogowanych: 0, gości: 1