it-swarm.com.de

Stellen Sie den Standardwert für den Datumseingabetyp auf Heute, Morgen, Anydate?

In HTML5 gibt es keine systemeigene Möglichkeit, im value-Attribut "today" anzugeben. Hier ist der jQuery-Code, den ich sehr mag. So erweitern Sie diesen Code zum Festlegen

  • heutiges Datum bis var today
  • morgen ist var tomorrow
  • beliebiges Datum berechnet nach var anydate (berechnet/initiiert aus var today?)

und definieren Sie die folgenden 3 IDs entsprechend:

  • #theDate
  • #theTomorrow
  • #theAnydate

HTML

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

jQuery

$(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

7
kirandulo

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

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

source: Antwort von Tak auf "HTML5-Eingabetyp Datum - Standardwert für heute?"

In diesem Fall könnten Sie möglicherweise ein Skript schreiben, um einfach +1 zu finden, um das Datum von morgen zu finden, aber Sie müssten zunächst einen Standardwert zu Ihrem input id für heutiges Datum hinzufügen.

Soweit anydate ? Nicht ganz sicher, was du da meinst. Wie ein Datepicker?

Die Frage war etwas unklar, aber ich dachte, ich würde mit den bereitgestellten Informationen so gut ich konnte helfen.


Um ein Datum über jQuery zuzuweisen, können Sie immer so etwas tun ...

http://jsfiddle.net/SinisterSystems/4XkVE/4/

HTML:

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

jQuery:

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!

var yyyy = today.getFullYear();
if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} today = mm+'/'+dd+'/'+yyyy;

$('#theDate').attr('value', today);

alert($('#theDate').attr('value'));

BEARBEITEN:

Um sowohl das heutige als auch das morgige Datum zu ermitteln und sicherzustellen, dass das Monatsende oder das Jahresende keine Auswirkungen darauf haben, verwenden Sie stattdessen Folgendes:

http://jsfiddle.net/SinisterSystems/4XkVE/6/

HTML:

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

jQuery

var today = new Date();
var tomorrow = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
var tomday = tomorrow.getDate();
var tommonth = tomorrow.getMonth() + 1;
var tomyear = tomorrow.getFullYear();
if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} today = mm+'/'+dd+'/'+yyyy;
if(tomday<10){tomday='0'+tomday} if(tommonth<10){tommonth='0'+tommonth} tomorrow = tommonth+'/'+tomday+'/'+tomyear;
$('#theDate').attr('value', today);
$('#tomorrowDate').attr('value', tomorrow);
10
Nicholas Hazel

Aufbauend auf Nicholas Hazel s Antwort und user113716 antwort auf führende Nullen für Datumsangaben , hier ist eine kurze Funktion, um ein Datum zu erhalten, das als JJJJ-MM-TT formatiert ist, und den Wert von " Datum "Typ Eingabesteuerung.

http://jsfiddle.net/wloescher/2t8v7fnf/2/

HTML

<div>Today:
    <input type="date" id="theDate" />
</div>
<div>Tomorrow:
    <input type="date" id="theTomorrow" />
</div>
<div>Any Date:
    <input type="date" id="theAnyDate" />
</div>

JavaScript

// Set values
$("#theDate").val(getFormattedDate(today()));
$("#theTomorrow").val(getFormattedDate(tomorrow()));
$("#theAnyDate").val(getFormattedDate(new Date("4/1/12")));

function today() {
    return new Date();
}

function tomorrow() {
    return today().getTime() + 24 * 60 * 60 * 1000;
}

// Get formatted date YYYY-MM-DD
function getFormattedDate(date) {
    return date.getFullYear()
        + "-"
        + ("0" + (date.getMonth() + 1)).slice(-2)
        + "-"
        + ("0" + date.getDate()).slice(-2);
}
4
wloescher

Ich habe eine sehr einfache Lösung gefunden:

echo (new DateTime('tomorrow'))->format('Y-m-d'); //-- For tomorrow
echo (new DateTime())->format('Y-m-d'); //-- For today
1
Umesh Gaire

Verwenden Sie toISOString (), das immer eine Zeitzone "Z" der Zeitzone ISO8601 zurückgibt und diese auf das Datum abschneidet.

var todayUTC = new Date().toISOString().substr(0,10);

var todayLocal = new Date(new Date().getTime() - new Date().getTimezoneOffset() * 60 * 1000).toISOString().substr(0,10);

var tomorrowLocal = new Date(new Date().getTime() + 24 * 60 * 60 * 1000 - new Date().getTimezoneOffset() * 60 * 1000).toISOString().substr(0,10);
0