Не правильно оторбражается ме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> |
<!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> Цитата:
|
с датой 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 - январь. |
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> |
Да, сейчас все верно:) Спасибо!
Надо было разбить веденное значение на массив .. var rexp=/[-\/\.,\s]+/ var changeval=valuedate.split(rexp) var newdate= new Date(changeval[0],changeval[1],changeval[2]) |
Цитата:
var val='2014-01-25T12:00Z'; var d=new Date(val); alert(d) Нормально работает... |
Спасибо! Мне надо изучить все особенности этого объекта Date :)
|
Часовой пояс GMT +3, время: 02:47. |