Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Cравнить две даты (https://javascript.ru/forum/misc/66368-cravnit-dve-daty.html)

MrMaks109 11.12.2016 17:10

Cравнить две даты
 
Нужно расчитать дни между двумя датами, месяц день и год, вводить в разных окнах.
var m = prompt('Enter the size of the matrix ', 10);
var d = prompt('Enter the size of the matrix ', 04);
var y = prompt('Enter the size of the matrix ', 2000);
var d0 = new Date(m d y); 
var d1 = new Date(); 
var dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24); 
document.write('Стартовая дата - <B>' + d0 + '</B> <br />От начала стартовой даты уже наступил <B>' + Math.round(dt) + '</B> день');

laimas 11.12.2016 18:21

Цитата:

Сообщение от MrMaks109
var d0 = new Date(m d y);

А если пользователь просто закроет окно?

MrMaks109 11.12.2016 18:54

я уже сделал, но если закроет то возьмется стандартная дата 30 ноября 1899 год

laimas 11.12.2016 18:56

Цитата:

Сообщение от MrMaks109
то возьмется стандартная дата 30 ноября 1899 год

Это какого такого стандарта? Да и так как написано вернет не дату, а ошибку.

MrMaks109 11.12.2016 19:20

laimas,
если ничего вы не вводите то идет значение 0, а отсчет начинается с 30 ноября 1899

laimas 11.12.2016 19:39

Цитата:

Сообщение от MrMaks109
а отсчет начинается с 30 ноября 1899

Отсчет начинается с эпохи Unix равной 1 января 1970 00:00:00 GMT. Только на клиенте будет отображаться не эта дата, а скорректированная по смещению часового пояса клиента.

А аргументы функции перечисляются не через пробел, а через запятую.

MrMaks109 11.12.2016 20:35

Вообщем как оно работает. Код:
function sm() 	{
var p1 = document.getElementById('t');
var p2 = document.getElementById('n');
var p3 = document.getElementById('o');
y = p1.value;
m = p2.value;
d = p3.value;
var d0 = new Date(y, m -1, d); 
var d1 = new Date(); 
var dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24); 
document.write('Вы ввели дату: - <B>' +d0+ '</B> <br />от начала стартовой даты уже прошло <B>' + Math.round(dt - 1) + '</B> дней'); 
				}

Ввел пустое значение
.
Получил:

laimas 12.12.2016 02:08

Это не есть стандартное время, это есть неопределенная хрень, так как в параметрах каша, от этого и зависит результат. А все программные часики считают от начала эпохи Unix.

Измените на своем компе часовой пояс и можно гарантировать, что ваша "стандартная дата" будет со странностями.


Часовой пояс GMT +3, время: 01:54.