2016-02-28 2 views
-3

Я беру дату в качестве ввода в текстовое поле и сравниваю дату ввода с текущей датой для проверки. но я не знаю, как преобразовать строку date date.Преобразование строки на сегодняшний день в javascript

var dateText = document.getElementById("textBoxId").value;

Просто я хочу, чтобы сравнить dateText с Date()

+0

Посмотрите на [moment.js] (http://momentjs.com/docs/#/parsing/) – bruchowski

+0

Вы можете использовать 'Date.parse()'. Посмотрите https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse. – cFreed

+0

Основы этого не трудно исследовать, и вы ожидаете сделать некоторые поиски, прежде чем задавать вопросы здесь. Вопрос не показывает никаких исследовательских усилий – charlietfl

ответ

0

Это будет зависеть от формата вы позволяете пользователю вводить в учебник # textBoxId, если вы обеспечиваете правильный формат, например, MM/DD/YYYY, то вы можете использовать Javascript Date чтобы разобрать строку в экземпляр JS Date:

var d = Date.parse(dateString); 

Другой пример:

var d = Date.parse("March 21, 2012"); 

Вы можете также использовать Date.parse неявно, как так:

var d = new Date("March 21, 2012"); 
0

Вы можете попробовать Date.parse()

Например:

// getting a timestamp 
console.log(Date.parse('2016/01/01')) // output 1451635200000 

// converting to a date object 
var dateObj = Date(Date.parse('2016/01/01')); 
0

Использование new Date() чтобы получить дату, передающую действительную строку даты.

Dateobj.getTime() =>Метод GetTime() возвращает количество миллисекунд от полуночи 1 января 1970 г. и на указанную дату

Dateobj.setHours() =>метод устанавливает час объекта даты. Этот метод также можно использовать для установки минут, секунд и миллисекунд.

Попробуйте это:

document.getElementById('check').addEventListener('click', function() { 
 
    var dateText = document.getElementById("textBoxId").value; 
 
    var inputDate = new Date(dateText); 
 
    inputDate.setHours(0, 0, 0, 0); //to exclude hours,minutes,sec and milliseconds 
 
    var today = new Date(); 
 
    today.setHours(0, 0, 0, 0); //to exclude hours,minutes,sec and milliseconds 
 
    if (inputDate.getTime() == today.getTime()) { 
 
    alert('Date selected is today!'); 
 
    } else if (inputDate.getTime() > today.getTime()) { 
 
    alert('Date selected is greater!'); 
 
    } else { 
 
    alert('Date selected is smaller!') 
 
    } 
 

 
});
<input type="date" id="textBoxId"> 
 
<button id='check'>Check</button>

0

Вы можете использовать метод Date.parse(), но он работает только с форматом MM/DD/YYYY, где

MM = month DD = day YYYY = year

Example fiddle

+0

Да, вы можете, но ожидайте, что это сработает, поскольку синтаксический анализ строк даты почти полностью зависит от реализации. – RobG

+0

О, и * Date.parse * работает с форматами can, отличными от m/d/y, но результаты очень несовместимы. – RobG

0

я тоже рекомендую Moment.js однако это большая загрузка.Есть некоторые странные вещи с датами JavaScript, но давайте идти на это в любом случае:

HTML:

<p> 
    Date <input id="date" type=="text" /> 
</p> 
<p> 
    Output: <span id="output"></span> 
</p> 

<p> 
    Enter a date as MM/DD/YYYY and then click out of the input to trigger the change event. 
</p> 

JavaScript:

document.getElementById('date').addEventListener('change', function(evt) { 
    var text = evt.target.value; 
    var parts = text.split('/'); 
    if (parts.length !== 3) { 
    alert('Invalid date format!'); 
    output.innerText = ''; 
    } else { 
    var asDate = new Date(parts[2], parts[0], parts[1]); 
    output.innerText = asDate.toString(); 
    } 
}); 

я показываю путь низкого уровня для разбора даты - жди он должен быть в формате MM/DD/YYYY, а затем использовать строковые функции для разделения на '/' на 3 части. Подайте их на new Date(YYYY, MM, DD). Здесь мы ленивы и не конвертируем части из строки в целое, но все равно работаем. Более надежным решением было бы преобразование деталей и их проверка.

Однако для этого гораздо проще использовать библиотеку из-за високосных годов и других странных дат.

JSFiddle: https://jsfiddle.net/5n79j48n/

Ссылка: MDN Date

+0

То, как вы проанализировали строку, в порядке, у нее не будет проблем с високосными годами. Чтобы проверить ввод, просто проверьте, что 'asDate.getMonth() == parts [0] -1'. Вот и все. – RobG

+0

@RobG да, я думал больше о проверке даты в течение месяца. Большинство проблем легко обойти, но есть множество тонких проблем. – Cymen

0

<script> 
 
function getmonth(txtmonth){ 
 
\t var txtmonth = txtmonth.toLowerCase(); 
 
\t arr=["","january","february","march","april","may","june","july","august","september","october","november","december"]; 
 
\t arrMonth=["","jan","feb","mar","apr","may","jun","jul","aug","sept","oct","nov","dec"]; 
 
\t strMonth = arr.indexOf(txtmonth); 
 
\t if (strMonth==-1){ 
 
\t \t //check again month to match with arrMonth 
 
\t \t strMonth = arrMonth.indexOf(txtmonth); 
 
\t } 
 
\t return strMonth; 
 
} 
 
function getClientDate(){ 
 
\t var client_date = document.getElementById("txtDate").value; 
 
\t var client_date = client_date.replace(/\s+/g, ""); 
 
\t var date = client_date.split("/"); 
 
\t \t \t 
 
\t var day = date[0]; 
 
\t //Check Day 
 
\t if (day > 31 || day.length>2){ 
 
\t \t alert("Invalid Date. Please Enter Valid Date."); 
 
\t \t document.getElementById("txtDate").value=""; 
 
\t \t document.getElementById("txtDate").focus(); 
 
\t \t return; 
 
\t } 
 
\t var month = date[1]; 
 
\t 
 
\t strMonth = getmonth(month); 
 
\t 
 
\t if (strMonth==-1){ 
 
\t \t var strMonth = date[1]; 
 
\t \t //check Month 
 
\t \t \t \t if (strMonth>12){ 
 
\t \t \t \t \t alert("Enter Valid Month"); 
 
\t \t \t \t \t document.getElementById("txtDate").value=""; 
 
\t \t \t \t \t document.getElementById("txtDate").focus(); 
 
\t \t \t \t \t return; 
 
\t \t \t \t } 
 
\t } 
 
\t 
 
\t var year = date[2]; 
 
\t //check Year; 
 
\t if (year.length>4){ 
 
\t \t alert("Enter Valid Year"); 
 
\t \t document.getElementById("txtDate").value=""; 
 
\t \t document.getElementById("txtDate").focus(); 
 
\t \t return; 
 
\t } 
 
\t //MS SQL FORMAT DATE 
 
\t var client_date = year + "-" + strMonth + "-" + day; 
 
\t document.getElementById("CDate").innerHTML=client_date; 
 
} 
 
</script>
<form action="" method="post"> 
 
<label>Date of Birth: Eg;</label> 
 
    <input type="text" id="txtDate" onchange="getClientDate(this.value)" placeholder="dd/mm/yyyy" /> 
 
    <span id="CDate"></span> 
 
</form>

Смежные вопросы