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.

Absender
quelle
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);
Dhanasekar
quelle
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.

int32_t
quelle
6
Dies ist die beste Lösung, die ich bisher gefunden habe - funktioniert auf Android 4.0.3
Ben Clayton
6
Skipjack
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.

Oliv Utilo
quelle
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.

Gourav Makhija
quelle
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);
Umair Khalid
quelle
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
4

Ihr Code hätte funktioniert, wenn er in diesem Format gewesen wäre: YYYY-MM-DDDies ist der Computerstandard für Datumsformate http://en.wikipedia.org/wiki/ISO_8601

Dominic
quelle
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())
aashah7
quelle
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 .

Eda Jede
quelle
-5

Jquery-Version

var currentdate = new Date();

$('#DatePickerInputID').val($.datepicker.formatDate('dd-M-y', currentdate));
Krutarth Vora
quelle
4
$.datepickerist nicht Standard jQuery. Sie verwenden ein Plugin und ohne zu sagen, welches, ist diese Antwort nutzlos.
Emile Bergeron