jQuery UI DatePicker - Alterar formato de data

546

Estou usando o DatePicker da interface do usuário do jQuery UI como o seletor autônomo. Eu tenho este código:

<div id="datepicker"></div>

E o seguinte JS:

$('#datepicker').datepicker();

Quando tento retornar o valor com este código:

var date = $('#datepicker').datepicker('getDate');

Devolvi isso:

Tue Aug 25 2009 00:00:00 GMT+0100 (BST)

Qual é o formato totalmente errado. Existe uma maneira de obtê-lo retornado no formato DD-MM-YYYY?

Tarnfeld
fonte
2
Perfeito, obrigado, por que $ .datepicker.formatDate ("aa-mm-dd", nova data (2007, 1 - 1, 26)); trabalhar como na documentação?
Hein du Plessis

Respostas:

961

Aqui está um específico para o seu código:

var date = $('#datepicker').datepicker({ dateFormat: 'dd-mm-yy' }).val();

Mais informações gerais disponíveis aqui:

AvatarKava
fonte
6
Isso me fornece o mesmo formato especificado no datepicker e não o dd-mm-aa. usando a versão 1.10. A resposta abaixo funciona bem.
Tommy
4
o yyestá me dando 2015. Como eu só consigo 15?
SearchForKnowledge
6
@SearchForKnowledge basta usar y. Formatação de
datapicker
11
prestar atenção que, se você já previamente definido um formato diferente, isso não funcionar, você deve fazer em seguida$("#datepicker").datepicker("option", "dateFormat", "dd-mm-yy" ).val()
João Pimentel Ferreira
4
em versões mais antigas format: 'dd-mm-yyyy',devem trabalhar
TarangP
99

dentro do código do script jQuery, basta colar o código.

$( ".selector" ).datepicker({ dateFormat: 'yy-mm-dd' });

isso deve funcionar.

Sampath
fonte
10
.selectore #datepickernão são os mesmos. Colar seu código literalmente não funcionaria.
perfil completo de Dave Jarvis
63

O getDatemétodo datepicker retorna um tipo de data, não uma string.

Você precisa formatar o valor retornado para uma sequência usando o formato da data. Use a formatDatefunção datepicker :

var dateTypeVar = $('#datepicker').datepicker('getDate');
$.datepicker.formatDate('dd-mm-yy', dateTypeVar);

A lista completa de especificadores de formato está disponível aqui .

kcsoft
fonte
34

Aqui, código completo para o selecionador de datas com formato de data (aa / mm / dd).

Copie o link abaixo e cole na tag head:

   <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>

Copie o código abaixo e cole entre a tag body:

      Date: <input type="text" id="datepicker" size="30"/>    

Se você desejar dois (2) tipos de entrada, digite texto como Start Datee, em End Dateseguida, use este script e altere o formato da data.

   <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>  

Dois textos de entrada como:

      Start Date: <input type="text" id="startdate" size="30"/>    
      End Date: <input type="text" id="enddate" size="30"/>
Nasirali
fonte
19

Formato de data

O formato para datas analisadas e exibidas. Este atributo é um dos atributos de regionalização. Para uma lista completa dos possíveis formatos, consulte a função formatDate.

Exemplos de código Inicialize um datepicker com a opção dateFormat especificada.

$( ".selector" ).datepicker({ dateFormat: 'yy-mm-dd' });

Obtenha ou defina a opção dateFormat, após o init.

//getter
var dateFormat = $( ".selector" ).datepicker( "option", "dateFormat" );
//setter
$( ".selector" ).datepicker( "option", "dateFormat", 'yy-mm-dd' );
user369661
fonte
A primeira linha de código neste exemplo faz com que o "Selecionador de data" funcione com um formato de data específico, em vez do formato padrão americano mm / dd / aa.
Ryan
3
@ Ryan, isso não funciona para mim, você tem um exemplo que inclui todas as linhas de código?
Knocte
19

getDateA função retorna uma data JavaScript. Use o seguinte código para formatar esta data:

var dateObject = $("#datepicker").datepicker("getDate");
var dateString = $.datepicker.formatDate("dd-mm-yy", dateObject);

Ele usa uma função de utilitário incorporada no datepicker:

$.datepicker.formatDate( format, date, settings ) - Formate uma data em um valor de sequência com um formato especificado.

A lista completa de especificadores de formato está disponível aqui .

Salman A
fonte
2
Teria sido melhor se você enriquecido resposta @kcsoft (como eu vou fazer) em vez de postar uma nova;)
azulada
10

$("#datepicker").datepicker("getDate") retorna um objeto de data, não uma sequência.

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
Catalin
fonte
10
<script type="text/javascript">
  $(function() {
    $( "#date" ).datepicker( {minDate: '0', dateFormat: 'yy-dd-mm' } );
  });
</script>
Muddasir Abbas
fonte
9

Tente usar o

$( ".selector" ).datepicker({ dateFormat: 'dd/mm/yy' });  

e há muitas opções disponíveis Para o datepicker, você pode encontrá-lo aqui

http://api.jqueryui.com/datepicker/

É assim que chamamos o datepicker com o parâmetro

$(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 
             }
      });
});
Ritesh d joshi
fonte
6

você pode simplesmente usar esse formato em sua função exatamente como

     $(function() {  
        $( "#datepicker" ).datepicker({
            dateFormat: 'dd/mm/yy',
          changeMonth: true,
          changeYear: true
        });
      });

<input type="text" id="datepicker"></p>
Rohit
fonte
5

Se você precisar da data no formato aa-mm-dd, poderá usar o seguinte: -

$("#datepicker").datepicker({ dateFormat: "yy-mm-dd" });

Você pode encontrar todo o formato suportado https://jqueryui.com/datepicker/#date-formats

Eu precisava de 06 de dezembro de 2015, fiz o seguinte: -

$("#datepicker").datepicker({ dateFormat: "d M,y" });
Kgn-web
fonte
4
$("#datepicker").datepicker({ dateFormat: "yy-mm-dd" }).val()
triste
fonte
4

Basta executar esta página HTML, você pode ver vários formatos.

<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>
Aprendiz constante
fonte
4

Isso também funciona:

$("#datepicker").datepicker({
    dateFormat:'d-m-yy'
});
Patrick Mutwiri
fonte
3
<script>
    $(function() {  
        $("#datepicker").datepicker(); 
        $('#datepicker').datepicker('option', {dateFormat: 'd MM y'});
    }); 
    $("#startDate").datepicker({dateFormat: 'd MM y'}); 
</script>
Sentou
fonte
3

Isso funciona sem problemas. Tente isso.

Cole esses links na sua seção principal.

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
<link rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
<link rel="stylesheet" href="css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

A seguir está a codificação JS.

 <script>

        $(document).ready(function () {
            $('#completionDate').datepicker({
                dateFormat: 'yy-mm-dd', // enter date format you prefer (e.g. 2018-10-09)
                changeMonth: true,
                changeYear: true,
                yearRange: "-50:+10",
                clickInput: true,

                onSelect: function (date) {
                    loadMusterChit();
                }

            });
        });

    </script>
Dulith De Costa
fonte
2

Se você configurar um selecionador de data em um input[type="text"]elemento, poderá não receber uma data formatada de forma consistente, principalmente quando o usuário não seguir o formato da data para entrada de dados.

Por exemplo, quando você define dateFormat como dd-mm-yye os tipos de usuário 1-1-1. O datepicker converterá isso para Jan 01, 2001internamente, mas chamar val()o objeto datepicker retornará a string "1-1-1"- exatamente o que está no campo de texto.

Isso implica que você deve validar a entrada do usuário para garantir que a data inserida esteja no formato esperado ou não permitir que o usuário insira datas de forma livre (preferindo o seletor de calendário). Mesmo assim, é possível forçar o código do datepicker para fornecer uma string formatada como você espera:

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"

No entanto, esteja ciente de que, embora o getDate()método do selecionador de data retorne uma data, ele só pode fazer muito com a entrada do usuário que não corresponde exatamente ao formato da data. Isso significa que, na ausência de validação, é possível obter uma data diferente do que o usuário espera. Advertência emptor .

par
fonte
2

Estou usando o jquery para datepicker. Esses jqueries são usados ​​para esse

<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">

Então você segue este código,

<script>
     jQuery(function() {
     jQuery( "#date" ).datepicker({ dateFormat: 'dd/mm/yy' });
                });
</script>
Sinsil Mathew
fonte
2

Minha opção é dada abaixo:

$(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>


fonte
1

Finalmente, obtive a resposta para o método de alteração de data do datepicker:

$('#formatdate').change(function(){
    $('#datpicker').datepicker("option","dateFormat","yy-mm-dd");
});
Ravi Soni
fonte
1

Eu uso isso:

var strDate = $("#dateTo").datepicker('getDate').format('yyyyMMdd');

O que retorna uma data de formato como " 20120118" para Jan 18, 2012.

Daniel Morin
fonte
1

O código abaixo pode ajudar a verificar se o formulário obteve mais de um campo de data:

<!doctype html>

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jQuery UI Datepicker - Display month &amp; 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>
Chakry
fonte
2
Como isso responde à pergunta original sobre os formatos de data?
Ryadavilli
0

Eu acho que a maneira correta de fazer isso seria algo como isto:

var picker = $('.date-picker');
var date = $.datepicker.formatDate(
    picker.datepicker('option', 'dateFormat'),
    picker.datepicker('getDate'));

Dessa forma, verifique se a sequência de caracteres do formato é definida apenas uma vez e se utiliza o mesmo formatador para converter a sequência de caracteres de formato na data formatada.

naktinis
fonte
0

Aqui está um snippet de data à prova do futuro pronto para uso. O Firefox usa como padrão o jquery ui datepicker. Caso contrário, o HTML5 datepicker é usado. Se o FF oferecer suporte a HTML5, digite = "date", o script será simplesmente redundante. Não se esqueça das três dependências necessárias na tag 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' );     
  }
});
jimshot
fonte
0

você deve usar data-date-format="yyyy-mm-dd"o campo de entrada html e o seletor de dados inicial no JQuery da mesma maneira que simples

$("#issue_date").datepicker({ 
    dateFormat: "yy-mm-dd",
    changeMonth: true,
    changeYear: true
});
SK Developers
fonte
0

Você pode adicionar e tentar desta maneira:

Arquivo HTML :

<p><input type="text" id="demoDatepicker" /></p>

Arquivo JavaScript :

$(function() {  
    $("#demoDatepicker").datepicker({
        dateFormat: 'dd/mm/yy',
        changeMonth: true,
        changeYear: true,
        constrainInput: false
    });
});
Ashraf.Shk786
fonte
0

Isto é o que funcionou para mim:

$.fn.datepicker.defaults.format = 'yy-mm-dd'
LalienX
fonte
0

Então, lutei com isso e pensei que estava ficando louco, a coisa é que o datepicker de bootstrap estava sendo implementado e não o jQuery, portanto as opções eram diferentes;

$('.dateInput').datepicker({  format: 'dd/mm/yyyy'})
Tristanisginger
fonte