Die HTML5-Eingabetypen sind großartig, die neue integrierte Datumsauswahl von Opera ist ein Kinderspiel, und Chrome hat den neuen Eingabetyp zumindest mit einer Spin-Wheel-Implementierung unterstützt.
Aber gibt es eine Möglichkeit, den Standardwert des Datumsfelds auf das heutige Datum festzulegen? Mit Opera kann ich in der Datumsauswahl "Heute" auswählen. Sobald ich auf eine der Schrittschaltflächen in Chrome klicke, wird das heutige Datum erhöht / verringert.
Ich bin nicht schüchtern, eine Lösung für dieses kleine Problem zu programmieren, aber es scheint mir albern, dass beide Browser das aktuelle Datum vollständig kennen, es aber nicht automatisch einfach einfügen (zumindest als Platzhalter).
Antworten:
Wie jedes HTML-Eingabefeld lässt der Browser es leer, es sei denn, mit dem
value
Attribut wird ein Standardwert angegeben .Leider bietet HTML5 keine Möglichkeit, "heute" im
value
Attribut anzugeben (das ich sehen kann), sondern nur ein gültiges RFC3339- Datum wie2011-09-29
.TL; DR Verwenden Sie das
YYYY-MM-DD
Datumsformat, da es sonst nicht angezeigt wirdquelle
DateTime.now.strftime("%Y-%m-%d")
date('Y-m-d')
als würde es die führende Null erfordern?myDate.toLocaleDateString('en-CA')
macht den TrickDas JavaScript-Datumsobjekt bietet ausreichend integrierte Unterstützung für das erforderliche Format, um eine manuelle Ausführung zu vermeiden:
Fügen Sie dies für die korrekte Zeitzonenunterstützung hinzu:
jQuery:
Pure JS:
quelle
local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
(wie diese Antwort schließlich erreicht).valueAsDate
(ohne IE, Firefox, vielleicht Safari, im Grunde alles außer Chrome, Opera, Edge und einigen mobilen Browsern). Alles unterstützt dievalue
Eigenschaft, die meine Lösung verwendet, selbst wenn Datumseingaben auf Texteingaben in den nicht unterstützenden Browsern zurückgreifen, schlägt die andere Lösung fehl oder schlägt fehl.input[type=datetime-local]
und änderte es inslice(0,19)
HTHdas funktioniert bei mir:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
quelle
valueAsDate
. html.spec.whatwg.org/multipage/forms.html#dom-input-valueasdatevalueAsDate
zunew Date()
, wird das Feld Wert 2018.03.28 gesetzt werden. Siehe austinfrance.wordpress.com/2012/07/09/…Der folgende Code funktioniert gut:
Beachten Sie, dass dies auf PHP beruht.
quelle
<?php echo date('Y-m-d', strtotime(date('Y/m/d'))); ?>
zu<?php echo date('Y-m-d'); ?>
Sie können den Standardwert über Javascript eingeben, wie hier dargestellt: http://jsfiddle.net/7LXPq/
Ich würde wahrscheinlich etwas mehr Zeit investieren, um zu sehen, ob der Monat und das Datum einstellig sind, und ihnen die zusätzliche Null voranstellen ... aber dies sollte Ihnen eine Idee geben.
BEARBEITEN: Überprüfung für die zusätzliche Null hinzugefügt
quelle
Befolgen Sie das Standard-Ymd-Format, wenn Sie PHP verwenden
quelle
HTML
JS
Demo
Wenn Sie jQuery nicht verwenden möchten, können Sie so etwas tun
HTML
JS
Demo
quelle
In HTML5 als solches gibt es keine Möglichkeit, den Standardwert des Datumsfelds auf das heutige Datum festzulegen. Wie in anderen Antworten gezeigt, kann der Wert mithilfe von JavaScript festgelegt werden. Dies ist normalerweise der beste Ansatz, wenn Sie den Standardwert gemäß dem aktuellen Datum festlegen möchten, an dem der Benutzer beim Laden der Seite aktuell ist.
HTML5 definiert die
valueAsDate
Eigenschaft fürinput type=date
Elemente. Mithilfe dieser Eigenschaft können Sie den Anfangswert direkt aus einem Objekt festlegen, das znew Date()
. B. von erstellt wurde . Beispielsweise kennt IE 10 diese Eigenschaft jedoch nicht. (Es fehlt auch echte Unterstützunginput type=date
, aber das ist ein anderes Problem.)In der Praxis müssen Sie die
value
Eigenschaft festlegen und sie muss in ISO 8601-konformer Notation vorliegen. Heutzutage ist dies ziemlich einfach, da wir erwarten können, dass derzeit verwendete Browser dietoISOString
Methode unterstützen:quelle
= new Date().toISOString().split('T')[0];
Wenn Sie im Brower etwas mit Datum und Uhrzeit zu tun haben, möchten Sie Moment.js verwenden :
moment()
Gibt ein Objekt zurück, das das aktuelle Datum und die aktuelle Uhrzeit darstellt. Anschließend rufen Sie die.format()
Methode auf, um eine Zeichenfolgendarstellung gemäß dem angegebenen Format abzurufen. In diesem FallYYYY-MM-DD
.Vollständiges Beispiel:
quelle
Verwenden Sie moment.js, um dieses Problem in zwei Zeilen zu lösen. Der HTML5-Datumseingabetyp akzeptiert nur dieses Format "JJJJ-MM-TT". Ich löse mein Problem auf diese Weise.
Dies ist der einfachste Weg, um dieses Problem zu lösen.
quelle
Javascript
Jquery
Andere Option
Wenn Sie Datum, Monat und Jahr anpassen möchten, geben Sie einfach die Summe oder Unterzahl nach Ihren Wünschen ein. 😎 Wenn der Monat von 0 aus gestartet wird, müssen Sie 1 mit dem Monat summieren.
Wenden Sie die Heute-Funktion an
quelle
Sehr einfach, verwenden Sie einfach serverseitige Sprachen wie PHP, ASP, JAVA oder sogar Javascript.
Hier ist die Lösung
quelle
quelle
Wenn Sie die eingegebene Datumszeit eingeben müssen, können Sie Folgendes verwenden:
quelle
Für NodeJS (Express mit SWIG-Vorlagen):
quelle
Die einfachsten Lösungen scheinen zu übersehen, dass die UTC-Zeit verwendet wird, einschließlich der hochstimmigen. Im Folgenden finden Sie eine optimierte ES6-Nicht-jQuery-Version einiger vorhandener Antworten:
quelle
value
odervalueAsDate
? Sieht aber gut aus.Dies ist, was ich in meinem Code getan habe, ich habe es gerade getestet und es hat gut funktioniert. Der Eingabetyp = "Datum" unterstützt das automatische Festlegen von curdate nicht. Die Art und Weise, wie ich diese Einschränkung überwunden habe, war die Verwendung von PHP-Code, einem einfachen Code wie diesem .
Ich hoffe es hilft!
quelle
Beide Top-Antworten sind falsch.
Ein kurzer Einzeiler, der reines JavaScript verwendet, die lokale Zeitzone berücksichtigt und keine zusätzlichen Funktionen definiert werden muss:
Dadurch wird die aktuelle Datumszeit in Millisekunden (seit der Epoche) abgerufen und der Zeitzonenversatz in Millisekunden (Minuten * 60.000 Minuten pro Millisekunde) angewendet.
Sie können das Datum mit festlegen
element.valueAsDate
, haben dann aber einen zusätzlichen Aufruf an denDate()
Konstruktor.quelle
Dies ist etwas, das Sie wirklich serverseitig tun müssen, da das lokale Zeitformat jedes Benutzers unterschiedlich ist, ganz zu schweigen davon, dass sich jeder Browser anders verhält.
Der HTML-Datumseingabewert sollte in diesem Format vorliegen: JJJJ-MM-TT. Andernfalls wird kein Wert angezeigt .
Ausgabe des heutigen Datums: 2019-02-08
Dann in Ihrem HTML:
<input type="date" value="<% =get_date %>"
benutze einfach das:
<input type="date" value="<?= date("Y-m-d"); ?>">
quelle
Dies ist sehr einfach, indem Sie den folgenden Code anwenden: Using
PHP
Die Datumsfunktion gibt das aktuelle Datum zurück, indem das Datum eingegeben wird
time()
.quelle
von Javascript:
quelle
quelle
Wenn Sie Ruby verwenden, können Sie damit den Standardwert auf das heutige Datum und die heutige Uhrzeit setzen:
quelle
Eine einfache Lösung:
quelle
document.querySelector('.set-today').value=new Date().toISOString().substr(0,10);
Da es keine Standardmethode zum Festlegen des Werts auf das heutige Datum gibt, würde ich sagen, dass dies von der Anwendung abhängen sollte. Wenn Sie die Aufmerksamkeit Ihrer Zielgruppe für die Datumsauswahl maximieren möchten, verwenden Sie ein serverseitiges Skript (PHP, ASP usw.), um den Standardwert festzulegen.
Wenn es sich jedoch um die Administrationskonsole des CMS handelt und Sie wissen, dass der Benutzer immer JS aktiviert hat oder Ihre Site vertrauenswürdig ist, können Sie JS verwenden, um den Standardwert gemäß jlbruno sicher zu füllen.
quelle
Ich hatte das gleiche Problem und habe es mit einfachem JS behoben. Die Eingabe:
die JS
Wichtig: Das JS-Skript sollte sich in der letzten Codezeile oder nach der Eingabe befinden, da das Skript Ihre Eingabe nicht findet, wenn Sie diesen Code vorher eingeben.
quelle
In HTML selbst gibt es keine Standardmethode zum Einfügen des heutigen Datums in das Eingabefeld. Wie jedes andere Eingabefeld akzeptiert es jedoch einen Wert.
Mit PHP können Sie das heutige Datum abrufen und in das Wertefeld des Formularelements eingeben.
Das Wertefeld akzeptiert das Format JJJJ-MM-TT als Eingabe. Erstellen Sie also einfach eine Variable
$date_string
im selben Format, das der Eingabewert akzeptiert, und füllen Sie sie mit dem Jahr, dem Monat und dem Tag, die vom heutigen Datum und Voilá abgerufen wurden. Sie haben selbst ein vorausgewähltes Datum!Hoffe das hilft :)
Bearbeiten:
Wenn Sie möchten, dass das Eingabefeld nicht in PHP, sondern in HTML verschachtelt ist, können Sie Folgendes tun.
Mir ist klar, dass diese Frage vor einiger Zeit gestellt wurde (vor 2 Jahren), aber ich habe noch eine Weile gebraucht, um eine eindeutige Antwort im Internet zu finden. Dies dient also jedem, der nach einer Antwort sucht, wann immer es sein mag, und hoffe es hilft allen sehr :)
Noch eine Bearbeitung:
Fast vergessen, etwas, das in der Vergangenheit für mich ein königlicher Schmerz war, ist immer zu vergessen, die Standardzeitzone festzulegen, wenn ein Skript in PHP erstellt wird, das die Funktion date () verwendet.
Die Syntax lautet
date_default_timezone_set(...);
. Die Dokumentation finden Sie hier auf PHP.net und die Liste der unterstützten Zeitzonen, die in die Funktion eingefügt werden sollen, finden Sie hier . Das war immer ärgerlich, da ich in Australien bin. Alles wird immer 10 Stunden zurückgeschoben, wenn ich dies nicht richtig eingestellt habe, da es standardmäßig UTC + 0000 ist, wo ich UTC + 1000 benötige. Sei also vorsichtig :)quelle
Danke Peter, jetzt ändere ich meinen Code.
quelle
Und für diejenigen, die ASP VBScript verwenden
Und dann sollte Ihr Element im Körper ungefähr so aussehen
Prost!
quelle
Selbst nach all dieser Zeit könnte es jemandem helfen. Dies ist eine einfache JS-Lösung.
JS
HTML
Eine ähnliche Lösung funktioniert in Angular ohne zusätzliche Bibliothek zum Konvertieren des Datumsformats. Für Angular (Code wird aufgrund des allgemeinen Komponentencodes verkürzt):
quelle