@hypnogaja

Каким образом посчитать разность дат в JS?

Всем привет,
Имеется простая таблица с графами Дата начала работ и Запланированная дата сдачи
Данные вводятся в модальном окне.
Дата начала работ имеет input date.
Запланированная дата сдачи имеет input number.
В базе данных mold_start_date и mold_scheduled_date имеют тип date.
В модальном окне собираются данные формы и отправляются в БД по принципу:
public function addMolds(){
	$mold_start_date = $_POST['mold_start_date']; // первая дата
	$mold_scheduled_date = $_POST['mold_scheduled_date']; //вторая дата
	$mold_scheduled_date = date( "Y-m-d", strtotime( $mold_start_date."+".$mold_scheduled_date." days") );//первая дата + вторая дата с преобразованием в тип даты MySQL

	$insertQuery = "INSERT INTO ".$this->moldTable." (mold_start_date, mold_scheduled_date) 
	VALUES ('".$_POST["mold_start_date"]."', '".$mold_scheduled_date."')";
	$isUpdated = mysqli_query($this->dbConnect, $insertQuery);		
}


Теперь эти данные нужно изменить, опять же в модальном окне и отправить на сервер используя UPDATE вместо INSERT.
public function updateMolds(){
	if($_POST['moldId']) {	
		$mold_start_date = $_POST['mold_start_date'];
		$mold_scheduled_date = $_POST['mold_scheduled_date'];
		$mold_scheduled_date = date( "Y-m-d", strtotime( $mold_start_date."+".$mold_scheduled_date." days") );
		$updateQuery = "UPDATE ".$this->moldTable." 
		SET mold_start_date = '".$_POST["mold_start_date"]."', '".$mold_scheduled_date."'
		WHERE id ='".$_POST["moldId"]."'";
		$isUpdated = mysqli_query($this->dbConnect, $updateQuery);		
	}	
}


Данные в модальное окно подставляются с помощью JS
$("#moldsList").on('click', '.update', function(){
		var moldId = $(this).attr("id");
		var action = 'getMolds';
		$.ajax({
			url:'moldsaction.php',
			method:"POST",
			data:{moldId:moldId, action:action},
			dataType:"json",
			success:function(data){
				$('#moldsModal').modal('show');
				$('#moldId').val(data.id);
				$('#mold_start_date').val(data.mold_start_date);			
				$('#mold_scheduled_date').val(data.mold_scheduled_date);
				$('.modal-title').html("<i class='fa fa-plus'></i> Изменить форму");
				$('#action').val('updateMolds');
				$('#save').val('Save');
			}
		})
	});


Все данные отлично добавляются, но не изменяются, потому что прежде чем выводить в модальное окно, данные дату нужно снова посчитать, но в обратном порядке: Запланированная дата сдачи - Дата начала работ и вывести уже число. Каким образом посчитать в разницу в датах в JS и подставить в модальное окно?
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
с использованием https://momentjs.com/docs/
// ваши даты из бд
var start = "1970-01-01";
var end = "2018-03-10";

// парсим их с помощью moment-а
var a = moment(start, "YYYY-MM-DD");
var b = moment(end, "YYYY-MM-DD");

// получаем количество дней между датами
var days = a.diff(b, 'days') ;

// пихаем days куда вам там надо
...


или так (на нативном js)
// ваши даты из бд
var start = "1970-01-01";
var end = "2018-03-10";

// парсим их с помощью нативного JS
var a = Date.parse(start);
var b = Date.parse(end);

// получаем количество дней между датами
var days = Math.floor(Math.abs(b-a)/(1000*60*60*24)) ;

// пихаем days куда вам там надо
...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы