Datum im Datum des Eingabetyps einstellen


104
<input id="datePicker" type="date" />​

Ich werde das heutige Datum in Datepicker-Eingabetyp Datum in Chrom einstellen .

$(document).ready( function() {
    var now = new Date();
    var today = now.getDate()  + '/' + (now.getMonth() + 1) + '/' + now.getFullYear();
    alert(today);
    $('#datePicker').val(today);
});​

aber es funktioniert nicht

Edit This jsFiddle - Bitte versuchen Sie es in Chrom.


2
Wenn Sie ein Datum auf Ihrer Geige auswählen und den Ergebnisrahmen überprüfen, $('#datePicker').val();geben "2012-09-10"Sie ein

Es funktioniert in Chrom an meinem Ende. Was meinst du genau damit its not working?
— AdityaParab

versuchen Sie { currentText: "Now" }
— :,

an mir arbeiten ... was ist das Problem?
— Netorica

1
@JigarPandya fr_FR (@ user108, ​​siehe auch stackoverflow.com/a/3496622/180100 )

Antworten:


158

Geigenlink: http://jsfiddle.net/7LXPq/93/

Zwei Probleme dabei:

  1. Die Datumssteuerung in HTML 5 wird im Format Jahr - Monat - Tag akzeptiert, wie wir es in SQL verwenden
  2. Wenn der Monat 9 ist, muss er einfach auf 09 und nicht auf 9 gesetzt werden. Es gilt also auch für das Tagesfeld.

Bitte folgen Sie dem Geigen-Link für die Demo:

var now = new Date();

var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);

var today = now.getFullYear()+"-"+(month)+"-"+(day) ;

$('#datePicker').val(today);

4
Antwort nach 2012: Überprüfen Sie meine Antwort auf eine unterstützte Lösung in einer Codezeile.
— Oliv Utilo

@ OlivUtilo - sicher, aber Ihre Antwort liefert manchmal falsche Ergebnisse.
— RobG

Du hast mir Zeit gespart, vielen Dank
— Dip Surani

128

document.getElementById("datePicker").valueAsDate = new Date()

sollte arbeiten.


6
Dies ist die beste Lösung, die ich bisher gefunden habe - funktioniert auf Android 4.0.3
— Ben Clayton


1
Ich habe festgestellt, dass dies in Safari aus irgendeinem Grund nicht funktioniert :(
— james_alvarez

Getestet in Chrome und Edge und funktioniert einwandfrei. Wie @Skipjack sagte, ist eine großartige Antwort!
— Arun

23

Update: Ich mache das mit date.toISOString().substr(0, 10). Gibt das gleiche Ergebnis wie die akzeptierte Antwort und hat gute Unterstützung.


2
Funktioniert in Safari
— james_alvarez

4
Hinweis: Dies gibt ein Datum in der UTC-Zeitzone an. Im Gegensatz dazu verwendet die Top-Antwort die Ortszeit.
— Qwertie

@Qwertie - beide arbeiten mit demselben DateObjekt (erstellt mit neuem Date oder Date.now, die die Zeitzone vom Browser erben). Die Verwendung von toISOString oder der getDate-Funktionen löst (glaube ich) dasselbe auf. Ich denke, dies sollte das gewünschte Verhalten haben ...
— Oliv Utilo

1
@ OlivUtilo - Nein, dies gilt nicht für den Zeitraum des Zeitzonenversatzes für den Host.
— RobG

Wie Qwertie sagt, gibt dies möglicherweise die falsche Antwort, wenn Sie ein Datum ohne Uhrzeit verwenden. zB Sa Sep 01 2018 00:00:00 GMT + 0100 wird in "2018-08-31" umgewandelt
— Havlock

14
var today = new Date().toISOString().split('T')[0];
$("#datePicker").val(today);

Der obige Code funktioniert.


12

Für mich ist der kürzeste Weg, um dieses Problem zu lösen, moment.js zu verwenden und dieses Problem in nur 2 Zeilen zu lösen.

var today = moment().format('YYYY-MM-DD');
$('#datePicker').val(today);

1
ja genau wie $ ('# datePicker'). val (moment (). format ('JJJJ-MM-TT'));
— Umair Khalid

2
Für Personen, die mit Moment nicht vertraut sind, wenn Sie ein beliebiges Javascript Date-Objekt mit moment () var yourFormattedDate= moment(yourDate).format('YYYY-MM-DD'); $('#datePicker').val(yourFormattedDate);
— formatieren möchten


1

Normalerweise erstelle ich diese beiden Hilfsfunktionen, wenn ich Datumseingaben verwende:

// date is expected to be a date object (e.g., new Date())
const dateToInput = date =>
  `${date.getFullYear()
  }-${('0' + (date.getMonth() + 1)).slice(-2)
  }-${('0' + date.getDate()).slice(-2)
  }`;

// str is expected in yyyy-mm-dd format (e.g., "2017-03-14")
const inputToDate = str => new Date(str.split('-'));

Sie können dann den Datumseingabewert wie folgt einstellen:

$('#datePicker').val(dateToInput(new Date()));

Und rufen Sie den ausgewählten Wert wie folgt ab

const dateVal = inputToDate($('#datePicker').val())

0

Datetimepicker benötigt immer das Eingabeformat JJJJ-MM-TT. Das Anzeigeformat Ihres Modells oder die Datumszeit Ihres lokalen Systems sind ihm egal. Das Ausgabeformat der Datetime-Auswahl ist jedoch das von Ihnen gewünschte (Ihr lokales System). In meinem Beitrag gibt es ein einfaches Beispiel .


-5

Jquery-Version

var currentdate = new Date();

$('#DatePickerInputID').val($.datepicker.formatDate('dd-M-y', currentdate));

4
$.datepickerist nicht Standard jQuery. Sie verwenden ein Plugin und ohne zu sagen, welches, ist diese Antwort nutzlos.
— Emile Bergeron
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.