jQuery UI DatePicker-изменить формат даты
я использую datepicker с пользовательского интерфейса пользовательского интерфейса jQuery как самостоятельный выбор. У меня есть такой код:
<div id="datepicker"></div>
и следующие JS:
$('#datepicker').datepicker();
когда я пытаюсь вернуть значение с помощью этого кода:
var date = $('#datepicker').datepicker('getDate');
Я вернулся:
Tue Aug 25 2009 00:00:00 GMT+0100 (BST)
что совершенно неправильный формат. Есть ли способ, которым я могу получить его обратно в формате DD-MM-YYYY?
25 ответов:
вот один конкретный для вашего кода:
var date = $('#datepicker').datepicker({ dateFormat: 'dd-mm-yy' }).val();более общая информация доступна здесь:
внутри кода скрипта jQuery просто вставьте код.
$( ".selector" ).datepicker({ dateFormat: 'yy-mm-dd' });это должно работать.
The
getDateметод datepicker возвращает тип даты, а не строку.нужно отформатировать возвращаемое значение в строку, используя формат даты. Используйте datepicker в
formatDateфункция:var dateTypeVar = $('#datepicker').datepicker('getDate'); $.datepicker.formatDate('dd-mm-yy', dateTypeVar);полный список спецификаторов формата здесь.
здесь полный код для выбора даты с форматом даты (yy/mm/dd).
скопируйте ссылку ниже и вставьте в голову тег:
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> <script type="text/javascript"> $(function() { $("#datepicker").datepicker({ dateFormat: "yy-mm-dd" }).val() }); </script>скопируйте код ниже и вставьте между тегом тела:
Date: <input type="text" id="datepicker" size="30"/>если вы хотите два (2) типа ввода текста, как
Start DateиEnd Dateзатем используйте этот скрипт и измените формат даты.<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> <script type="text/javascript"> $(function() { $("#startdate").datepicker({ dateFormat: "dd-mm-yy" }).val() $("#enddate").datepicker({ dateFormat: "dd-mm-yy" }).val() }); </script>два ввода текста :
Start Date: <input type="text" id="startdate" size="30"/> End Date: <input type="text" id="enddate" size="30"/>
getDateфункция возвращает дату JavaScript. Используйте следующий код для форматирования даты:var dateObject = $("#datepicker").datepicker("getDate"); var dateString = $.datepicker.formatDate("dd-mm-yy", dateObject);Он использует функцию утилиты, которая встроена в datepicker:
$.datepicker.formatDate( format, date, settings )- Форматирование даты в строковое значение с заданным форматом.полный список спецификаторов формата здесь.
формат для анализируемых и отображаемых дат. Этот атрибут является одним из атрибуты регионализации. Для полного списка возможных форматы см. функцию formatDate.
примеры кода инициализировать datepicker с параметром dateFormat указанный.
$( ".selector" ).datepicker({ dateFormat: 'yy-mm-dd' });получить или установить параметр dateFormat, после инициализации.
//getter var dateFormat = $( ".selector" ).datepicker( "option", "dateFormat" ); //setter $( ".selector" ).datepicker( "option", "dateFormat", 'yy-mm-dd' );
$("#datepicker").datepicker("getDate")возвращает объект, а не строку.var dateObject = $("#datepicker").datepicker("getDate"); // get the date object var dateString = dateObject.getFullYear() + '-' + (dateObject.getMonth() + 1) + '-' + dateObject.getDate();// Y-n-j in php date() format
<script type="text/javascript"> $(function() { $( "#date" ).datepicker( {minDate: '0', dateFormat: 'yy-dd-mm' } ); }); </script>
попробуйте использовать
$( ".selector" ).datepicker({ dateFormat: 'dd/mm/yy' });и есть много вариантов, доступных для datepicker вы можете найти его здесь
http://api.jqueryui.com/datepicker/Так мы называем datepicker с параметром
$(function() { $('.selector').datepicker({ dateFormat: 'dd/mm/yy', changeMonth: true, numberOfMonths: 1, buttonImage: 'contact/calendar/calendar.gif', buttonImageOnly: true, onSelect: function(selectedDate) { // we can write code here } }); });
вы можете просто использовать этот формат в ВЫ функция так же, как
$(function() { $( "#datepicker" ).datepicker({ dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true }); }); <input type="text" id="datepicker"></p>
Если вам нужна дата в формате yy-mm-dd,вы можете использовать это:-
$("#datepicker").datepicker({ dateFormat: "yy-mm-dd" });Вы можете найти все поддерживаемые форматы https://jqueryui.com/datepicker/#date-formats
я нуждался в 06, Dec 2015, я сделал это: -
$("#datepicker").datepicker({ dateFormat: "d M,y" });
<script> $(function() { $("#datepicker").datepicker(); $('#datepicker').datepicker('option', {dateFormat: 'd MM y'}); }); $("#startDate").datepicker({dateFormat: 'd MM y'}); </script>
просто запустите эту HTML-страницу, вы можете увидеть несколько форматов.
<html lang="en"> <head> <meta charset="utf-8" /> <title>jQuery UI Datepicker - Format date</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css" /> <script> $(function() { $( "#datepicker" ).datepicker(); $( "#format" ).change(function() { $( "#datepicker" ).datepicker( "option", "dateFormat", $( this ).val() ); }); }); </script> </head> <body> <p>Date: <input type="text" id="datepicker" size="30" /></p> <p>Format options:<br /> <select id="format"> <option value="mm/dd/yy">Default - mm/dd/yy</option> <option value="yy-mm-dd">ISO 8601 - yy-mm-dd</option> <option value="d M, y">Short - d M, y</option> <option value="d MM, y">Medium - d MM, y</option> <option value="DD, d MM, yy">Full - DD, d MM, yy</option> <option value="'day' d 'of' MM 'in the year' yy">With text - 'day' d 'of' MM 'in the year' yy</option> </select> </p> </body> </html>
если вы установите datepicker на
input[type="text"]элемент вы не можете получить последовательно отформатированную дату, особенно когда пользователь не следует формату даты для ввода данных.например, когда вы устанавливаете dateFormat как
dd-mm-yyи пользователь вводит1-1-1. Элемент datepicker преобразует этоJan 01, 2001внутренне но вызовval()на объекте datepicker будет возвращена строка"1-1-1"-- именно то, что находится в текстовом поле.это означает, что вы должны либо проверяйте пользовательский ввод, чтобы убедиться, что введенная дата находится в ожидаемом формате, либо не разрешайте пользователю вводить даты в свободной форме (предпочитая вместо этого выбор календаря). Даже так это и можно заставить код datepicker дать вам строку в формате, как вы ожидаете:
var picker = $('#datepicker'); picker.datepicker({ dateFormat: 'dd-mm-yy' }); picker.val( '1-1-1' ); // simulate user input alert( picker.val() ); // "1-1-1" var d = picker.datepicker( 'getDate' ); var f = picker.datepicker( 'option', 'dateFormat' ); var v = $.datepicker.formatDate( f, d ); alert( v ); // "01-01-2001"имейте в виду, однако, что в то время как datepicker в
getDate()метод вернет дату, он может сделать только так много с пользовательским вводом, который точно не соответствует формату даты. Этот означает, что в отсутствие проверки можно получить дату назад, которая отличается от того, что ожидает пользователь. предостережение emptor.
Я использую jquery для datepicker.Эти jqueries используются для этого
<script src="jqueryCalendar/jquery-1.6.2.min.js"></script> <script src="jqueryCalendar/jquery-ui-1.8.15.custom.min.js"></script> <link rel="stylesheet" href="jqueryCalendar/jqueryCalendar.css">тогда вы следуете этому коду,
<script> jQuery(function() { jQuery( "#date" ).datepicker({ dateFormat: 'dd/mm/yy' }); }); </script>
наконец-то получил ответ на метод изменения даты datepicker:
$('#formatdate').change(function(){ $('#datpicker').datepicker("option","dateFormat","yy-mm-dd"); });
Я использую этот:
var strDate = $("#dateTo").datepicker('getDate').format('yyyyMMdd');, который возвращает дату в формате "
20120118" дляJan 18, 2012.
ниже код может помочь проверить, если форма получила более 1 поля даты:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <title>jQuery UI Datepicker - Display month & year menus</title> <link rel="stylesheet" href="jquery-ui.css" /> <script src="jquery-1.8.3.js"></script> <script src="jquery-ui.js"></script> <link rel="stylesheet" href="style.css" /> <script> function pickDate(DateObject){ // alert(DateObject.name) $(function() { $("#"+DateObject.name).datepicker({ dateFormat: "dd/mm/yy" }).val() }); } /* $(function() { $( "#datepicker" ).datepicker({ changeMonth: true, changeYear: true }); }); */ </script> </head> <body> <p>From Date: <input type="text" name="FromDate" id="FromDate" size="9" onfocus="pickDate(this)"/></p> <p>To Date: <input type="text" name="ToDate" id="ToDate" size="9" onfocus="pickDate(this)" /></p> </body> </html>
мой вариант приведен ниже:
$(document).ready(function () { var userLang = navigator.language || navigator.userLanguage; var options = $.extend({}, $.datepicker.regional["ja"], { dateFormat: "yy/mm/dd", changeMonth: true, changeYear: true, highlightWeek: true } ); $("#japaneseCalendar").datepicker(options); });#ui-datepicker-div { font-size: 14px; }<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.min.css"> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.1/i18n/jquery-ui-i18n.min.js"></script> </head> <body> <h3>Japanese JQuery UI Datepicker</h3> <input type="text" id="japaneseCalendar"/> </body> </html>
Я думаю, что правильный способ сделать это было бы чем-то вроде этого:
var picker = $('.date-picker'); var date = $.datepicker.formatDate( picker.datepicker('option', 'dateFormat'), picker.datepicker('getDate'));таким образом, вы убедитесь, что строка формата определена только один раз, и вы используете тот же форматер для преобразования строки формата в форматированную дату.
вот фрагмент даты будущего доказательства из коробки. Firefox по умолчанию использует jQuery ui datepicker. В противном случае используется HTML5 datepicker. Если FF когда-либо поддерживает HTML5 type="date", скрипт будет просто избыточным. Не забывайте, что три зависимости необходимы в теге head.
<script> src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"> </script> <link rel="stylesheet"href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <!--Form element uses HTML 5 type="date"--> <div class="form-group row"> <label for="date" class="col-sm-2 col-form-label"Date</label> <div class="col-sm-10"> <input type="date" class="form-control" name="date" id="date" placeholder="date"> </div> </div> <!--if the user is using FireFox it autoconverts type='date' into type='text'. If the type is text the script below will assign the jquery ui datepicker with options--> <script> $(function() { var elem = document.createElement('input'); elem.setAttribute('type', 'date'); if ( elem.type === 'text' ) { $('#date').datepicker(); $( "#date" ).datepicker( "option", "dateFormat", 'yy-mm-dd' ); } });
Вы можете добавить и попробовать таким образом:
HTML file:
<input type="text" id="demoDatepicker"></p>JavaScript file:
$(function() { $("#demoDatepicker").datepicker({ dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true, constrainInput: false }); });
вы должны использовать
data-date-format="yyyy-mm-dd"в вашем поле ввода html и выбора исходных данных в JQuery так же, как простой$("#issue_date").datepicker({ dateFormat: "yy-mm-dd", changeMonth: true, changeYear: true });
Comments