To nie jest problem specyficzny dla Moment.js; to samo dzieje się, jeśli spróbujesz zainicjować obiekt Date()
za pomocą napisu, którego używasz. Jeśli tworzysz go jako Date()
przedmiotu pierwszy i ręcznie przypisać roku użyciu setYear()
to jednak przyjąć datę -700
:
var date = new Date();
date.setYear(-700);
moment(date).year();
> -700
Jednak jak Niels Keurentjes has pointed out obliczenia data tak daleko z powrotem dostać dość skomplikowane i nie może być w ogóle niezawodny.
Jeśli chcesz „-700-01-01” można skonfigurować rok, miesiąc i dzień oddzielnie:
date.setYear(-700);
date.setMonth(0);
date.setDate(1);
console.log(date);
> Fri Jan 01 -700 11:53:57 GMT+0000 (GMT Standard Time)
Jako, czy 1 dzień od 1 miesiąca w 700BC był rzeczywiście w piątek ... sam będziesz musiał to sprawdzić.
Co do zasady nie powinieneś tego chcieć. Obliczenia dat tak dawno temu będą z gruntu niewiarygodne i błędne, ponieważ kalendarz gregoriański po prostu nie był wtedy znormalizowany. W skrócie: nigdy nie było "1 stycznia" zgodnie z kalendarzową logiką Moment.js, w 700BC jedynym sporadycznie używanym kalendarzem był [Kalendarz Numa] (http://en.wikipedia.org/wiki/ Roman_calendar # Calendar_of_Numa), który liczył 355 dni każdego roku. Kalendarz gregoriański nie był zdalny do 1752AD. –
jest kilka powodów, dla których warto to zrobić - może użytkownik musi przedstawić pewne dane na osi czasu wykonane przez "Zazall" narzędzie javascript, a zatem to żądanie jest całkowicie poprawne. Nikt nie wątpi, że daty BC nie są wiarygodne, jeśli chodzi o dzień tygodnia, ale nadal musi być sposób, jak to zrobić. Świat nie zaczął się 1.1.1970 ... :) – Radek