Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2014, 12:44
Интересующийся
Отправить личное сообщение для oxxy Посмотреть профиль Найти все сообщения от oxxy
 
Регистрация: 05.12.2013
Сообщений: 20

Не правильно оторбражается меcяц в Date()
Добрый день!

Изучаю объект Дата

Решил создать простую форму, определяющая разницу между текущей и заданной датой.
Справочно В Date() дата указывается так - Date(2014,0,25)

Значение параметра( 2014,0,25) я решил вводить в форме и затем оно проставляется в коде в объект Date()

Но если пользователь введет в форму 2014,0,25 то месяц будет не январь 2014 а декабрь за 2013.
Если же 2014,0,25 ввести вручную в коде в параметр объекта Date(), то все нормально - отображается январь.

Понятно что можно ввести в в форму 2014,1,25 тогда все нормально.
Но все же ,почему так происходит? Ведь в Date 0- январь..

вот мой java script код

function getdate(){
//получаем значение даты введенное в форму пользователем		
var valuedate=document.f2.getdateinput.value;

//заменяем символы введенные пользователем на запятую(по формату Date()
var rexp=/- \/\./g;//перечень возможных символов введенным пользователем
var changeval=valuedate.replace(rexp,',')//замена на запятую


	var date=new Date();//текущая дата
	var newdate= new Date(changeval);//новая дата,   переменная va changeval - в ней содержатся дата ,введенная пользователем
	var deff=newdate-date;            //получаем разницу между текущей и новой датой
	var sec=Math.floor(deff/1000);    //получаем секунды
	var min=Math.floor(sec/60);       //получаем минуты
	var hour=Math.floor(min/60);	  //получаем часы
	var day=Math.floor(hour/24);	//получаем день
	
	//здесь просто выводится информация о времени 

    var mainrez=document.getElementById('div2');
    mainrez.innerHTML= 'Дата,котрую вы ввели '+newdate+'<br/>'+'Дата которая записалась в параметр Date() ' +changeval+'<br/>'+
'Осталось минут '+min+'</br>'+'Осталось часов '+hour+'</br>'+'Осталось дней '+day;
	
}


HTML код

<form name="f2">
	<label for="getdate">Enter date</label>
	<input  type="datetime" id="getdate" value='' name="getdateinput" width="50px"/>
</form>

	<form name="f1">
	<input type="button" value="get date" onclick="getdate()"/>
	</form>

<div id="div2">
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2014, 13:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,137

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function getdate(){
	//получаем значение даты введенное в форму пользователем		
	var valuedate=document.f2.getdateinput.value;
	//заменяем символы введенные пользователем на запятую(по формату Date()
	var rexp=/- \/\./g;//перечень возможных символов введенным пользователем
	var changeval=valuedate.replace(rexp,',')//замена на запятую
	var date=new Date();//текущая дата
	var newdate= new Date(changeval);//новая дата,   переменная va changeval - в ней содержатся дата ,введенная пользователем
	var deff=newdate-date;            //получаем разницу между текущей и новой датой
	var sec=Math.floor(deff/1000);    //получаем секунды
	var min=Math.floor(sec/60);       //получаем минуты
	var hour=Math.floor(min/60);	  //получаем часы
	var day=Math.floor(hour/24);	//получаем день
	//здесь просто выводится информация о времени 
	var mainrez=document.getElementById('div2');
	mainrez.innerHTML= 'Дата,котрую вы ввели '+newdate+'<br/>'+'Дата которая записалась в параметр Date() ' +changeval+'<br/>'+'Осталось минут '+min+'</br>'+'Осталось часов '+hour+'</br>'+'Осталось дней '+day;
};
</script>
</head>
<body>
<form name="f2">
	<label for="getdate">Enter date</label>
	<input  type="datetime" id="getdate" value='' name="getdateinput" width="50px"/>
</form>
<form name="f1">
	<input type="button" value="get date" onclick="getdate()"/>
</form>
<div id="div2"></div>
</body>
</html>
Цитата:
Enter date 2014-01-25 12:00

Дата,котрую вы ввели Sat Jan 25 2014 16:00:00 GMT+0400
Дата которая записалась в параметр Date() 2014-01-25T12:00Z
Осталось минут 4476
Осталось часов 74
Осталось дней 3
Что не так?
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2014, 14:26
Интересующийся
Отправить личное сообщение для oxxy Посмотреть профиль Найти все сообщения от oxxy
 
Регистрация: 05.12.2013
Сообщений: 20

с датой 2014-01-25 12:00 все ок=)


Не совсем понятно следующее-

в объекте Date дату надо указывать так Date (2014,0,25)

У меня все,что вводится в форму-записывается в переменную changeval ,а сама переменная заноситься в параметр Date

var newdate= new Date([B]changeval[/B])


Вот мне и не понятно почему в Date (2014,0,25) 0 - январь А когда в самой форме указываю 2014,0,25 - выводит декабрь.

Я понимаю что для нас понятнее будет 01-январь,но я ведь специально все данные записываю в параметр Date() А у него есть правило что 0 - январь.
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2014, 15:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

oxxy,

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function getdate(){
	//получаем значение даты введенное в форму пользователем
	var valuedate=document.f2.getdateinput.value;
	//заменяем символы введенные пользователем на запятую(по формату Date()
	var rexp=/[-\/\.,\s]+/;//перечень возможных символов введенным пользователем
	var changeval=valuedate.split(rexp);
	var date=new Date();//текущая дата
	var newdate= new Date(changeval[0],changeval[1],changeval[2]);//новая дата,   переменная va changeval - в ней содержатся дата ,введенная пользователем
	var deff=newdate-date;            //получаем разницу между текущей и новой датой
	var sec=Math.floor(deff/1000);    //получаем секунды
	var min=Math.floor(sec/60);       //получаем минуты
	var hour=Math.floor(min/60);	  //получаем часы
	var day=Math.floor(hour/24);	//получаем день
	//здесь просто выводится информация о времени
	var mainrez=document.getElementById('div2');
	mainrez.innerHTML= 'Дата,котрую вы ввели '+newdate+'<br/>'+'Дата которая записалась в параметр Date() ' +changeval+'<br/>'+'Осталось минут '+min+'</br>'+'Осталось часов '+hour+'</br>'+'Осталось дней '+day;
};
</script>
</head>
<body>
<form name="f2">
	<label for="getdate">Enter date</label>
	<input  type="datetime" id="getdate" value='' name="getdateinput" width="50px"/>
</form>
<form name="f1">
	<input type="button" value="get date" onclick="getdate()"/>
</form>
<div id="div2"></div>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2014, 15:27
Интересующийся
Отправить личное сообщение для oxxy Посмотреть профиль Найти все сообщения от oxxy
 
Регистрация: 05.12.2013
Сообщений: 20

Да, сейчас все верно Спасибо!

Надо было разбить веденное значение на массив ..

var rexp=/[-\/\.,\s]+/

var changeval=valuedate.split(rexp)

var newdate= new Date(changeval[0],changeval[1],changeval[2])
Ответить с цитированием
  #6 (permalink)  
Старый 22.01.2014, 15:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,137

Сообщение от oxxy
я ведь специально все данные записываю в параметр Date() А у него есть правило что 0 - январь
var val='2014-01-25T12:00Z';
var d=new Date(val);
alert(d)

Нормально работает...
Ответить с цитированием
  #7 (permalink)  
Старый 22.01.2014, 16:01
Интересующийся
Отправить личное сообщение для oxxy Посмотреть профиль Найти все сообщения от oxxy
 
Регистрация: 05.12.2013
Сообщений: 20

Спасибо! Мне надо изучить все особенности этого объекта Date
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время,не правильное отображение скриптов Visual Общие вопросы Javascript 0 29.10.2013 19:12
Обновление объекта Date (сокращение кода) HJ90 Элементы интерфейса 4 07.09.2013 20:58
как правильно отслеживать вставку html() bombascter jQuery 15 20.11.2012 09:47
Как правильно прописать свой код в .js Всеми_Любимый Элементы интерфейса 6 23.02.2010 21:34
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20