jQuery UI DatePicker - Zmień format daty

546

Używam UI DatePicker z jQuery UI jako samodzielnego selektora. Mam ten kod:

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

I następujący JS:

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

Kiedy próbuję zwrócić wartość z tym kodem:

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

Zwrócono mi to:

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

Który jest całkowicie niewłaściwy format. Czy istnieje sposób, aby go zwrócić w formacie DD-MM-YYYY?

Tarnfeld
źródło
2
Idealnie, dziękuję, dlaczego $ .datepicker.formatDate („rr-mm-dd”, nowa data (2007, 1–1, 26)); pracować jak w dokumentacji?
Hein du Plessis

Odpowiedzi:

961

Oto jeden konkretny kod:

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

Więcej ogólnych informacji dostępnych tutaj:

AvatarKava
źródło
6
To tylko daje mi ten sam format, jaki określiłem w datepicker, a nie dd-mm-rr. za pomocą wersji 1.10. Poniższe answear działa dobrze.
Tommy
4
yydaje mi 2015. Jak mogę uzyskać tylko 15?
SearchForKnowledge
6
@ SzukajForKnowledge wystarczy użyć y. formatowanie
daty
11
zwróć uwagę, że jeśli wcześniej zdefiniowałeś inny format, to nie działa, powinieneś to zrobić$("#datepicker").datepicker("option", "dateFormat", "dd-mm-yy" ).val()
João Pimentel Ferreira
4
w starszych wersjach format: 'dd-mm-yyyy',powinno działać
TarangP
99

wewnątrz kodu skryptu jQuery po prostu wklej kod.

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

to powinno działać.

sampath
źródło
9
.selectori #datepickernie są takie same. Wklejanie kodu dosłownie nie działałoby.
Dave Jarvis
63

The getDateMetoda datepicker zwraca format daty, a nie ciąg.

Musisz sformatować zwróconą wartość w ciągu za pomocą formatu daty. Użyj formatDatefunkcji datepicker :

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

Pełna lista specyfikatorów formatu jest dostępna tutaj .

kcsoft
źródło
34

Tutaj należy wpisać kod selektora daty z formatem daty (rr / mm / dd).

Skopiuj poniższy link i wklej w tagu 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>

Skopiuj poniższy kod i wklej między tagiem body:

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

Jeśli chcesz dwa (2) typy tekstu jak, Start Datea End Datenastępnie użyj tego skryptu i zmień format daty.

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

Dwa tekst wejściowy, taki jak:

      Start Date: <input type="text" id="startdate" size="30"/>    
      End Date: <input type="text" id="enddate" size="30"/>
Nasirali
źródło
19

format daty

Format parsowanych i wyświetlanych dat. Ten atrybut jest jednym z atrybutów regionalizacji. Pełna lista możliwych formatów znajduje się w funkcji formatDate.

Przykłady kodu Zainicjuj narzędzie datepicker z określoną opcją dateFormat.

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

Pobierz lub ustaw opcję dateFormat po inicjacji.

//getter
var dateFormat = $( ".selector" ).datepicker( "option", "dateFormat" );
//setter
$( ".selector" ).datepicker( "option", "dateFormat", 'yy-mm-dd' );
369661
źródło
Pierwszy wiersz kodu w tym przykładzie powoduje, że „Wybór daty” działa z określonym formatem daty, a nie z domyślnym amerykańskim formatem mm / dd / rr.
Ryan,
3
@ Ryan to nie działa dla mnie, czy masz przykład, który zawiera wszystkie wiersze kodu?
knocte
19

getDatefunkcja zwraca datę JavaScript. Użyj następującego kodu, aby sformatować tę datę:

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

Korzysta z funkcji narzędzia wbudowanej w datepicker:

$.datepicker.formatDate( format, date, settings ) - Sformatuj datę na wartość ciągu o określonym formacie.

Pełna lista specyfikatorów formatu jest dostępna tutaj .

Salman A.
źródło
2
Byłoby lepiej, gdybyś wzbogacił odpowiedź @kcsoft (tak jak ja to zrobię) zamiast opublikować nową;)
niebieskawy
10

$("#datepicker").datepicker("getDate") zwraca obiekt daty, a nie ciąg znaków.

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

Spróbuj użyć

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

i jest wiele opcji dostępnych dla datepicker'a można go znaleźć tutaj

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

W ten sposób nazywamy datepicker parametrem

$(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
źródło
6

możesz po prostu użyć tego formatu w tobie, tak jak działa

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

<input type="text" id="datepicker"></p>
Rohit
źródło
5

Jeśli potrzebujesz daty w formacie rr-mm-dd, możesz użyć tego: -

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

Wszystkie obsługiwane formaty można znaleźć https://jqueryui.com/datepicker/#date-formats

Potrzebowałem 06 grudnia 2015, zrobiłem to: -

$("#datepicker").datepicker({ dateFormat: "d M,y" });
Kgn-web
źródło
4
$("#datepicker").datepicker({ dateFormat: "yy-mm-dd" }).val()
smutny
źródło
4

Wystarczy uruchomić tę stronę HTML, możesz zobaczyć kilka formatów.

<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>
Constant Learner
źródło
dokładnie skopiowane z: jqueryui.com/resources/demos/datepicker/date-formats.html
Sunil Kumar
4

To też działa:

$("#datepicker").datepicker({
    dateFormat:'d-m-yy'
});
Patrick Mutwiri
źródło
3
<script>
    $(function() {  
        $("#datepicker").datepicker(); 
        $('#datepicker').datepicker('option', {dateFormat: 'd MM y'});
    }); 
    $("#startDate").datepicker({dateFormat: 'd MM y'}); 
</script>
Sob
źródło
3

To działa płynnie. Spróbuj tego.

Wklej te linki w sekcji głównej.

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

Poniżej znajduje się kodowanie 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
źródło
2

Jeśli ustawisz datepicker na input[type="text"]elemencie, możesz nie uzyskać spójnie sformatowanej daty, szczególnie gdy użytkownik nie stosuje formatu daty do wprowadzania danych.

Na przykład po ustawieniu dateFormat jako dd-mm-yyi typach użytkowników 1-1-1. Datepicker przekonwertuje to na Jan 01, 2001wewnętrznie, ale wywołanie val()obiektu datepicker zwróci ciąg "1-1-1"- dokładnie to, co jest w polu tekstowym.

Oznacza to, że powinieneś albo sprawdzać poprawność danych wprowadzanych przez użytkownika, aby upewnić się, że wprowadzona data jest w oczekiwanym formacie, albo nie zezwalać użytkownikowi na wprowadzanie dowolnych dat (preferując zamiast tego wybór kalendarza). Nawet tak, to jest możliwe, aby wymusić kod datepicker dać ciąg sformatowany jak można się spodziewać:

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"

Należy jednak pamiętać, że chociaż getDate()metoda datepicker zwróci datę, może to zrobić tylko tyle, ile dane wejściowe użytkownika nie pasują dokładnie do formatu daty. Oznacza to, że przy braku sprawdzania poprawności możliwe jest odzyskanie daty innej niż oczekiwana przez użytkownika. Zastrzegający emptor .

par
źródło
2

Używam jquery dla datepicker. Te jqueries są do tego używane

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

Następnie postępujesz zgodnie z tym kodem,

<script>
     jQuery(function() {
     jQuery( "#date" ).datepicker({ dateFormat: 'dd/mm/yy' });
                });
</script>
Sinsil Mathew
źródło
2

Moja opcja jest podana poniżej:

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


źródło
1

Wreszcie otrzymałem odpowiedź na metodę zmiany daty datepicker:

$('#formatdate').change(function(){
    $('#datpicker').datepicker("option","dateFormat","yy-mm-dd");
});
Ravi Soni
źródło
1

Używam tego:

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

Która zwraca datę formatu „ 20120118” dla Jan 18, 2012.

Daniel Morin
źródło
1

Poniższy kod może pomóc sprawdzić, czy formularz ma więcej niż 1 pole daty:

<!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
źródło
2
W jaki sposób odpowiada to oryginalne pytanie dotyczące formatów dat?
ryadavilli,
0

Myślę, że właściwym sposobem na zrobienie tego byłoby coś takiego:

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

W ten sposób upewniasz się, że ciąg formatu jest zdefiniowany tylko raz i używasz tego samego formatyzatora do przetłumaczenia ciągu formatu na sformatowaną datę.

naktinis
źródło
0

Oto gotowy fragment daty przyszłej próby. Firefox domyślnie używa jperydowego interfejsu użytkownika datepicker. W przeciwnym razie używany jest datepicker HTML5. Jeśli FF kiedykolwiek będzie obsługiwać HTML5 type = "date", skrypt będzie po prostu zbędny. Nie zapomnij, że w tagu head potrzebne są trzy zależności.

<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
źródło
0

powinieneś użyć data-date-format="yyyy-mm-dd"w swoim polu wejściowym HTML i początkowego selektora danych w JQuery tak samo prosto

$("#issue_date").datepicker({ 
    dateFormat: "yy-mm-dd",
    changeMonth: true,
    changeYear: true
});
Programiści SK
źródło
0

Możesz dodać i wypróbować w ten sposób:

Plik HTML :

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

Plik JavaScript :

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

Oto, co zadziałało dla mnie:

$.fn.datepicker.defaults.format = 'yy-mm-dd'
LalienX
źródło
0

Więc zmagałem się z tym i myślałem, że oszaleję, chodzi o to, że wdrażanie datepicker'a było wdrażane, a nie jQuery, więc opcje były różne;

$('.dateInput').datepicker({  format: 'dd/mm/yyyy'})
Tristanisginger
źródło