Wie setze ich den Standardwert für das Datum des Eingabetyps auf heute?

403

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

Ian Brown
quelle
Möglicherweise ist dies hilfreich. stackoverflow.com/questions/14212527/…
Musa
Die Lösung: stackoverflow.com/a/38801898/3147690
villamejia
4
var date = neues Datum (); // Datumsobjekt erstellen var min_date = date.toISOString (). Slice (0,10); //// aktuelles Datum erhalten spezifischen Teil "2018-02-02"
Günay Gültekin
<input type = "date" value = "JJJJ-MM-TT" />
Boris Detry

Antworten:

288

Wie jedes HTML-Eingabefeld lässt der Browser es leer, es sei denn, mit dem valueAttribut wird ein Standardwert angegeben .

Leider bietet HTML5 keine Möglichkeit, "heute" im valueAttribut anzugeben (das ich sehen kann), sondern nur ein gültiges RFC3339- Datum wie 2011-09-29.

TL; DR Verwenden Sie das YYYY-MM-DDDatumsformat, da es sonst nicht angezeigt wird

Tak
quelle
50
für .net-Benutzer: DateTime.Today.ToString ("yyyy-MM-dd")
dvdmn
3
Beachten Sie, dass die '0' vor Monat und Tag erforderlich ist: "2011-09-29" funktioniert, "2011-9-29" nicht.
Nico
2
Ruby: (auch)DateTime.now.strftime("%Y-%m-%d")
Adam Grant
43
@MartinBarker wäre das nicht so, date('Y-m-d')als würde es die führende Null erfordern?
SGR
15
Für JavaScript: myDate.toLocaleDateString('en-CA')macht den Trick
Ulysse BN
218

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

Date.prototype.toDateInputValue = (function() {
    var local = new Date(this);
    local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
    return local.toJSON().slice(0,10);
});


jQuery:

$(document).ready( function() {
    $('#datePicker').val(new Date().toDateInputValue());
});​


Pure JS:

document.getElementById('datePicker').value = new Date().toDateInputValue();
brianary
quelle
1
Achten Sie darauf, ob Sie Mobile unterstützen. Unter Android 4.0.3 hatte ich (zumindest) Probleme, bei denen das über das Popup-Datumssteuerelement ausgewählte neue Datum an das heutige Datum angehängt wird , anstatt es zu ersetzen. Beispielsweise können Sie am Ende 2013-03-252013-03-27 anstatt 2013-03-25 enden, und es gibt keine Möglichkeit für den Benutzer, dies zu ändern.
Ben Clayton
1
@Web_Designer Fair genug. Sie sollten sich dann zuerst anpassen local.setMinutes(this.getMinutes() - this.getTimezoneOffset());(wie diese Antwort schließlich erreicht).
Brian
1
Dadurch wird nur die value- Eigenschaft festgelegt. Das Attribut wird nicht festgelegt. Wenn das Formular zurückgesetzt wird, wird standardmäßig kein Wert verwendet. Außerdem wäre es viel klarer, toISOString zu verwenden , was toJSON sowieso nennt.
RobG
1
@apraetor Eigentlich ist es umgekehrt, da nur Browser unterstützt werden, die Datumseingaben unterstützen valueAsDate(ohne IE, Firefox, vielleicht Safari, im Grunde alles außer Chrome, Opera, Edge und einigen mobilen Browsern). Alles unterstützt die valueEigenschaft, 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.
Brian
2
Diese Antwort funktionierte für mich mit a input[type=datetime-local]und änderte es in slice(0,19)HTH
jcruz
189

das funktioniert bei mir:

document.getElementById('datePicker').valueAsDate = new Date();

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement

André
quelle
1
funktioniert es in allen Browsern? und mobile Versionen auch? Geprüft ?
Usman Younas
2
@UsmanY Es ist Teil der HTML5-Spezifikation, daher sollte alles unterstützt werden, was HTML5-Eingabetypen unterstützt valueAsDate. html.spec.whatwg.org/multipage/forms.html#dom-input-valueasdate
wersimmon
@harbichidian Der Vorschlag für die Datumseingabe liegt eine Weile vor dem Vorschlag für valueAsDate. Haben Sie einen Link zur Browserunterstützung für diese Eigenschaft?
Brian
3
Das Datum wird in UTC-Zeit umgerechnet. Wenn Sie bei 06.00 auf 2018.03.27 in -0600, und Sie setzen das valueAsDatezu new Date(), wird das Feld Wert 2018.03.28 gesetzt werden. Siehe austinfrance.wordpress.com/2012/07/09/…
Aupajo
1
Wie @Aupajo sagte, setzt dies das falsche Datum, wenn Sie keine UTC-Zeit möchten.
ADJenks
81

Der folgende Code funktioniert gut:

<input type="date" value="<?php echo date('Y-m-d'); ?>" />

Beachten Sie, dass dies auf PHP beruht.

Isham Mohamed
quelle
64
Ihre Antwort hängt vollständig von PHP ab.
Yëco
1
Wenn sich Ihr Kontaktformular auf einer PHP-Seite befindet (z. B. auf einer WordPress-Seite oder einem Shortcode), funktioniert dies einwandfrei. Vielen Dank Isham!
Tristanojbacon
5
Sie könnten die Redundanz reduzieren, indem Sie <?php echo date('Y-m-d', strtotime(date('Y/m/d'))); ?>zu<?php echo date('Y-m-d'); ?>
Murray Smith
7
Hiermit wird das Datum entsprechend dem Erstellungsdatum (auf einem Server in der Zeitzone des Servers) des HTML-Dokuments festgelegt. Es muss nicht mit dem aktuellen Datum übereinstimmen, da das Feld tatsächlich ausgefüllt wird. Clientseitiges JavaScript ist besser, wenn Sie Dinge tun müssen, die von der Benutzerseite abhängen.
Jukka K. Korpela
1
Sie können auch das kurze Tag <? = date ('Ym-d') verwenden. ?>. Ein "Echo" weniger
sashok_bg
36

Sie können den Standardwert über Javascript eingeben, wie hier dargestellt: http://jsfiddle.net/7LXPq/

$(document).ready( function() {
    var now = new Date();
    var month = (now.getMonth() + 1);               
    var day = now.getDate();
    if (month < 10) 
        month = "0" + month;
    if (day < 10) 
        day = "0" + day;
    var today = now.getFullYear() + '-' + month + '-' + day;
    $('#datePicker').val(today);
});

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

Jeff
quelle
In Opera (getestet unter Opera 12 / Windows) funktioniert dies nicht, wenn Sie die führenden Nullen nicht in Monat und Tag setzen.
Renato
31

Befolgen Sie das Standard-Ymd-Format, wenn Sie PHP verwenden

<input type="date" value="<?php echo date("Y-m-d"); ?>">
Shuhad Zaman
quelle
2
Sie sollten erwähnen, dass diese Antwort funktioniert, wenn Sie PHP verwenden. Dies ist nicht bei allen der Fall.
Motassem MK
24

HTML

<input type="date" id="theDate">

JS

$(document).ready(function() {
    var date = new Date();

    var day = date.getDate();
    var month = date.getMonth() + 1;
    var year = date.getFullYear();

    if (month < 10) month = "0" + month;
    if (day < 10) day = "0" + day;

    var today = year + "-" + month + "-" + day;       
    $("#theDate").attr("value", today);
});

Demo

Wenn Sie jQuery nicht verwenden möchten, können Sie so etwas tun

HTML

<input type="date" id="theDate">

JS

var date = new Date();

var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();

if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;

var today = year + "-" + month + "-" + day;       
document.getElementById("theDate").value = today;

Demo


quelle
22

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 valueAsDateEigenschaft für input type=dateElemente. Mithilfe dieser Eigenschaft können Sie den Anfangswert direkt aus einem Objekt festlegen, das z new Date(). B. von erstellt wurde . Beispielsweise kennt IE 10 diese Eigenschaft jedoch nicht. (Es fehlt auch echte Unterstützung input type=date, aber das ist ein anderes Problem.)

In der Praxis müssen Sie die valueEigenschaft festlegen und sie muss in ISO 8601-konformer Notation vorliegen. Heutzutage ist dies ziemlich einfach, da wir erwarten können, dass derzeit verwendete Browser die toISOStringMethode unterstützen:

<input type=date id=e>
<script>
document.getElementById('e').value = new Date().toISOString().substring(0, 10);
</script>
Jukka K. Korpela
quelle
6
Oder wenn Sie möchten, dass es Y10K-konform ist:= new Date().toISOString().split('T')[0];
Blazemonger
1
toISOString gibt ein UTC-Datum und eine UTC-Uhrzeit zurück, sodass möglicherweise nicht das richtige Datum für die Zeitzone des Benutzers angezeigt wird. Wenn der Benutzer beispielsweise UTC + 0800 ist, erhält er von Mitternacht bis 08:00 das Datum von gestern.
RobG
18

Wenn Sie im Brower etwas mit Datum und Uhrzeit zu tun haben, möchten Sie Moment.js verwenden :

moment().format('YYYY-MM-DD');

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 Fall YYYY-MM-DD.

Vollständiges Beispiel:

<input id="today" type="date">
<script>
document.getElementById('today').value = moment().format('YYYY-MM-DD');
</script>
Gabriel Garcia
quelle
Wenn Sie bereits über moment () verfügen oder planen, mehr Daten in Ihrer Web-App zu bearbeiten, ist diese Lösung ein Kinderspiel. Moment löst so viele Probleme.
secretwep
10

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.

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

Dies ist der einfachste Weg, um dieses Problem zu lösen.

Umair Khalid
quelle
8

Javascript

document.getElementById('date-field').value = new Date().toISOString().slice(0, 10);

Jquery

$('#date-field').val(new Date().toISOString().slice(0, 10));

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.

function today() {
        let d = new Date();
        let currDate = d.getDate();
        let currMonth = d.getMonth()+1;
        let currYear = d.getFullYear();
        return currYear + "-" + ((currMonth<10) ? '0'+currMonth : currMonth )+ "-" + ((currDate<10) ? '0'+currDate : currDate );
    }

Wenden Sie die Heute-Funktion an

document.getElementById('date-field').value = today();

$('#date-field').val(today());
MD Iyasin Arafat
quelle
7

Sehr einfach, verwenden Sie einfach serverseitige Sprachen wie PHP, ASP, JAVA oder sogar Javascript.

Hier ist die Lösung

<?php
  $timezone = "Asia/Colombo";
  date_default_timezone_set($timezone);
  $today = date("Y-m-d");
?>
<html>
  <body>
    <input type="date" value="<?php echo $today; ?>">
  </body>
</html>
Teshguru
quelle
7
<input id="datePicker" type="date" />

$(document).ready( function() {
    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);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="datePicker" type="date" />

Santanu
quelle
5

Wenn Sie die eingegebene Datumszeit eingeben müssen, können Sie Folgendes verwenden:

<input type="datetime-local" name="datetime" 
       value="<?php echo date('Y-m-d').'T'.date('H:i'); ?>" />
user2615287
quelle
5

Für NodeJS (Express mit SWIG-Vorlagen):

<input type="date" id="aDate" name="aDate" class="form-control" value="{{ Date.now() | date("Y-m-d") }}" />
CodeValve
quelle
5

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:

const today = (function() {
    const now = new Date();
    const month = (now.getMonth() + 1).toString().padStart(2, '0');
    const day = now.getDate().toString().padStart(2, '0');
    return `${now.getFullYear()}-${month}-${day}`;
})();
console.log(today); // as of posting this answer: 2019-01-24
Sauerstoff
quelle
Sie sollten angeben, welcher Eigenschaft eines Eingabeelements es zugewiesen werden soll. valueoder valueAsDate? Sieht aber gut aus.
ADJenks
4

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 .

<html>
<head></head>
    <body>
        <form ...>
            <?php
                echo "<label for='submission_date'>Data de submissão</label>";
                echo "<input type='date' name='submission_date' min='2012-01-01' value='" . date('Y-m-d') . "' required/>";
            ?>
        </form>
    </body>
</html>

Ich hoffe es hilft!

Gumba
quelle
1
Hallo und willkommen bei SO. Bitte fügen Sie weitere Informationen hinzu, um Ihren Code zu unterstützen, und stellen Sie sicher, dass die Person, die die Frage stellt, eine PHP-basierte Lösung wünscht.
Shiva
4

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:

const element = document.getElementById('date-input');
element.valueAsNumber = Date.now()-(new Date()).getTimezoneOffset()*60000;
<input id='date-input' type='date'>

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 den Date()Konstruktor.

Rovyko
quelle
4

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 .

ASP CLASSIC ODER VBSCRIPT:

current_year = DatePart("yyyy",date) 
current_month = DatePart("m",date) 
current_day = DatePart("d",date) 

IF current_month < 10 THEN
current_month = "0"&current_month
END IF
IF current_day < 10 THEN
current_day = "0"&current_day
END IF

get_date = current_year&"-"&current_month&"-"&current_day
Response.Write get_date

Ausgabe des heutigen Datums: 2019-02-08

Dann in Ihrem HTML: <input type="date" value="<% =get_date %>"

PHP

benutze einfach das: <input type="date" value="<?= date("Y-m-d"); ?>">

csandreas1
quelle
4

Dies ist sehr einfach, indem Sie den folgenden Code anwenden: Using PHP

<input type="date" value="<?= date('Y-m-d', time()); ?>" />

Die Datumsfunktion gibt das aktuelle Datum zurück, indem das Datum eingegeben wird time().

Gowtham Ag
quelle
2

von Javascript:

var today = new Date();

document.getElementById("theDate").value = today.getFullYear() + '-' + ('0' + (today.getMonth() + 1)).slice(-2) + '-' + ('0' + today.getDate()).slice(-2);
Charnstyle
quelle
2
new Date().getFullYear()+"-"+ ((parseInt(new Date().getMonth())+1+100)+"").substring(1)
Kingsuede
quelle
1
Bitte fügen Sie eine Beschreibung mit Ihrer Antwort hinzu.
bawa g
1

Wenn Sie Ruby verwenden, können Sie damit den Standardwert auf das heutige Datum und die heutige Uhrzeit setzen:

<input type="datetime-local" name="time" value="<%= Time.now.strftime('%Y-%m-%dT%H:%M') %>" />
Sean
quelle
1

Eine einfache Lösung:

<input class="set-today" type="date">
<script type="text/javascript">
    window.onload= function() {
        document.querySelector('.set-today').value=(new Date()).toISOString().substr(0,10));
    }
</script>
Gajam
quelle
1
@GeorgeJempty Dies gilt nicht, wenn die aktuelle Uhrzeit in UTC ein anderer Tag als der aktuelle Tag ist. Das aktuelle Datum wird in UTC zurückgegeben, nicht in Ihrer lokalen Zeitzone.
ADJenks
@adjenks Heh Ich sehe, dass es eine perfekte Zeit für mich war, 10 Minuten bis Mitternacht zu testen
Dexygen
@adjenks Ich habe endlich ein halbes Dutzend Zeilen herausgepeitscht, die die UTC-Gefahr vermeiden und einige vorhandene ähnliche jQuery / Nicht-ES6-Antworten leicht verbessern: stackoverflow.com/a/54341296/34806
Dexygen
Die Antwort hat ein zusätzliches ")" am Ende der Zeile und überflüssige Abhängigkeiten um "new Date ()". Sollte sein: document.querySelector('.set-today').value=new Date().toISOString().substr(0,10);
Kirby L. Wallace
0

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.

stslavik
quelle
0

Ich hatte das gleiche Problem und habe es mit einfachem JS behoben. Die Eingabe:

<input type="date" name="dateOrder" id="dateOrder"  required="required">

die JS

<script language="javascript">
document.getElementById('dateOrder').value = "<?php echo date("Y-m-d"); ?>";
</script>

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.

Marlon
quelle
2
Wenn Sie trotzdem PHP verwenden, warum sollten Sie sich dann mit JavaScript beschäftigen ?
Blazemonger
0

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.

<?php
    // Fetch the year, month and day
    $year = date(Y);
    $month = date(m);
    $day = date(d);

    // Merge them into a string accepted by the input field
    $date_string = "$year-$month-$day";

    // Send to the browser the input field with the value set with the date string
    echo "<input type='date' value='$date_string' />";
?>

Das Wertefeld akzeptiert das Format JJJJ-MM-TT als Eingabe. Erstellen Sie also einfach eine Variable $date_stringim 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.

<?php
    // Fetch the year, month and day
    $year = date(Y);
    $month = date(m);
    $day = date(d);

    // Merge them into a string accepted by the input field
    $date_string = "$year-$month-$day";
?>
<html>
    <head>...</head>
    <body>
        <form>
            <input type="date" value="<?php print($date_string); ?>" />
        </form>
    </body>
</html>

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

SteppingHat
quelle
0

Danke Peter, jetzt ändere ich meinen Code.

<input type='date' id='d1' name='d1'>

<script type="text/javascript">
var d1 = new Date();
var y1= d1.getFullYear();
var m1 = d1.getMonth()+1;
if(m1<10)
    m1="0"+m1;
var dt1 = d1.getDate();
if(dt1<10)
dt1 = "0"+dt1;
var d2 = y1+"-"+m1+"-"+dt1;
document.getElementById('d1').value=d2;
</script>
Nikhil SHETH
quelle
3
Bitte, bitte, bitte verwenden Sie document.write nicht in realen Anwendungen - es gibt so viele Probleme bei der Verwendung.
Peter Hart
Peter, kannst du erklären, was wahrscheinlich ist? du hast ?
Nikhil SHETH
Peter, erwähne auch, wie du das aktuelle Datum als Standardwert in Eingabetyp = Datum
bekommst
1
Es ist nicht so, dass es nicht funktioniert, aber im Allgemeinen ist es eine schlechte Praxis, document.write zu verwenden. Es gibt unzählige Gründe, warum dies der Fall ist. Hier einige Beispiele: stackoverflow.com/questions/802854/… Wenn ich dies auf dem Client unbedingt in Javascript tun müsste, würde ich eine ID für das Element und das Dokument verwenden. getElementById, um das Element abzurufen und zu ändern, ähnlich wie bei einigen anderen Antworten auf dieser Seite.
Peter Hart
0

Und für diejenigen, die ASP VBScript verwenden

<%
'Generates date in yyyy-mm-dd format
Function GetFormattedDate(setDate)
strDate = CDate(setDate)
strDay = DatePart("d", strDate)
strMonth = DatePart("m", strDate)
strYear = DatePart("yyyy", strDate)
If strDay < 10 Then
  strDay = "0" & strDay
End If
If strMonth < 10 Then
  strMonth = "0" & strMonth
End If
GetFormattedDate = strYear & "-" & strMonth & "-" & strDay
End Function
%>

Und dann sollte Ihr Element im Körper ungefähr so ​​aussehen

<input name="today" type="date" value="<%= GetFormattedDate(now) %>" />

Prost!

Ryan Dunphy
quelle
0

Selbst nach all dieser Zeit könnte es jemandem helfen. Dies ist eine einfache JS-Lösung.

JS

  let date = new Date();
  let today = date.toISOString().substr(0, 10);
  //console.log("Today: ", today);//test
  document.getElementById("form-container").innerHTML =
    '<input type="date" name="myDate" value="' + today + '" >';//inject field

HTML

 <form id="form-container"></form>

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

//so in myComponent.ts 
//Import.... @Component...etc...
date: Date = new Date();
today: String; //<- note String
//more const ...
export class MyComponent implements OnInit {
   //constructor, etc.... 
   ngOnInit() {
      this.today = this.date.toISOString().substr(0, 10);
   }
}
//so in component.html 
<input type="date" [(ngModel)]="today"  />
StefaDesign
quelle
Dies ist viel zu umständlich, um nur einen Standardwert verwenden zu müssen.
Reformiert
Auf welches von zwei unabhängigen Beispielen möchten Sie hinweisen? Die 4 Codezeilen in beiden Beispielen .... Das erste Beispiel ist reines HTML + JS. Erstellen Sie also einen Container und kopieren Sie den Code, fügen Sie die 3 Zeilen ein, wenn Sie keine Kommentare zählen. Gleiches gilt für das eckige Beispiel, weshalb ich einen Kommentar hinterlassen habe. Ich
bin