webentwicklung-frage-antwort-db.com.de

So stellen Sie die Datumszeit auf datetime-local über jQuery ein

Ich habe ein datetime-local html-Steuerelement in meinem Formular und muss Datum und Uhrzeit dynamisch über JS oder jQuery festlegen. Wie kann ich es tun?

<input type="datetime-local" id="publishDate" required/>

Ich habe es versucht

$("#publishDate").val("2013-3-18 13:00");
$("#publishDate").val("2013-3-18T13:00");
$("#publishDate").val(new Date().toLocalString());

aber nichts hat funktioniert.

Danke im Voraus.

16
Vlad Bezden

Das würde den Trick tun

$("#publishDate").val("2013-03-18T13:00");

Sie müssen für den Monat 2 Ziffern verwenden, damit Ihre Probe funktioniert.

16
Claudio Redi

Wenn Sie aktuelles Datum festlegen möchten, können Sie Folgendes versuchen:

__Method 1:__

$(document).ready(function(){
    $('input[type=datetime-local]').val(new Date().toJSON().slice(0,19));
});

__Method 2:__

function zeroPadded(val) {
  if (val >= 10)
    return val;
  else
    return '0' + val;
}

$(document).ready(function(){
  d = new Date();
  $('input[type=datetime-local]').val(d.getFullYear()+"-"+zeroPadded(d.getMonth() + 1)+"-"+zeroPadded(d.getDate())+"T"+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
});

Note: Sie können $ ('input [type = datetime-local]') durch Id oder Name oder Class des datetime-local-Felds ersetzen.

EDIT: d.getMonth () gibt einen Wert zwischen 0 und 11 zurück. Um den Monat 1 einzugeben, muss das Ergebnis hinzugefügt werden.

10
Varun Natraaj

Wie wäre es mit?

var now=new Date();
console.log(new Date(now.getTime()-now.getTimezoneOffset()*60000).toISOString().substring(0,19));

8
klaudyuxxx

Ich habe eine jQuery-Methode geschrieben, die die aktuelle UTC-Zeit festlegt . Es ist nützlich, um datetime- und datetime-local-Eingabefelder zu initialisieren.

So würden Sie ein Feld initialisieren.

$('input[type="datetime"]').setNow();

Oder übergeben Sie ein Argument von true, um nur Felder ohne Wert festzulegen.

$('input[type="datetime"]').setNow(true);
5
rb-

Hier finden Sie eine Lösung zum Formatieren des Datums mit momentjs.
Dadurch werden das aktuelle Datum und die aktuelle Uhrzeit angezeigt

moment().format('YYYY-MM-DDThh:mm:ss.SSS')
0
Twinstar

Diese Komponente ist fehlerhaft, da sie noch nicht richtig angegeben wurde. Die Implementierungen sind wahrscheinlich auch etwas eigenartig.

Der richtige Weg, dies zu tun, sollte ein Date-Objekt sein, mit JS und DOM wäre es sinnlos, dies nicht zu haben. Dinge mit der String-Manipulation zu tun, wird Zalgo aufrufen. Früher oder später wird es mit dem Gebietsschema oder der Zeitzone brechen.

Ich habe so etwas gesucht und in Chrome 46 gefunden:

$('input[type=datetime-local]').prop('valueAsNumber', Math.floor(new Date() / 60000) * 60000); // 60seconds * 1000milliseconds

Wenn Sie die Sekunden und Millisekunden nicht entfernen, werden sie im Eingabefeld angezeigt.

Es gibt auch eine valueAsDate-Eigenschaft, jedoch auf mysteriöse Weise:

Uncaught DOMException: Failed to set the 'valueAsDate' property on 'HTMLInputElement': This input element does not support Date values.

Sie haben es also noch nicht fertig implementiert oder wählen einen schlechten Namen für diese Eigenschaft (es wird jedoch auch null angezeigt, wenn etwas gesetzt ist).

0
jgmjgm