Mi chiedo se sia possibile impostare il formato della data nel <input type="date"></input>
tag html ... Attualmente è aaaa-mm-gg, mentre ne ho bisogno nel formato gg-mm-aaaa.
Mi chiedo se sia possibile impostare il formato della data nel <input type="date"></input>
tag html ... Attualmente è aaaa-mm-gg, mentre ne ho bisogno nel formato gg-mm-aaaa.
Risposte:
Non lo fai.
In primo luogo, la tua domanda è ambigua: intendi il formato in cui viene visualizzata all'utente o il formato in cui viene trasmessa al server web?
Se intendi il formato in cui viene visualizzato all'utente, questo dipende dall'interfaccia dell'utente finale, non da tutto ciò che specifichi nell'HTML. Di solito, mi aspetto che sia basato sul formato della data impostato nelle impostazioni locali del sistema operativo. Non ha senso provare a sovrascriverlo con il tuo formato preferito, poiché il formato in cui viene visualizzato è (generalmente parlando) quello corretto per le impostazioni internazionali dell'utente e il formato in cui l'utente è abituato a scrivere / comprendere le date.
Se intendi il formato in cui viene trasmesso al server, stai cercando di risolvere il problema sbagliato. Quello che devi fare è programmare il codice lato server per accettare le date nel formato aaaa-mm-gg.
input[type=password]
dice che "l'agente utente dovrebbe oscurare il valore in modo che le persone diverse dall'utente non possano vederlo", che è tanto una presentazione quanto dire che l'agente utente dovrebbe presentare la data in un certo modo.
Ho trovato la stessa domanda o domanda correlata su StackOverflow
C'è un modo per modificare il tipo di input = formato "data"?
Ho trovato una semplice soluzione, non puoi dare particolato in formato ma puoi personalizzare in questo modo.
Codice HTML:
<body>
<input type="date" id="dt" onchange="mydate1();" hidden/>
<input type="text" id="ndt" onclick="mydate();" hidden />
<input type="button" Value="Date" onclick="mydate();" />
</body>
Codice CSS:
#dt{text-indent: -500px;height:25px; width:200px;}
Codice Javascript:
function mydate()
{
//alert("");
document.getElementById("dt").hidden=false;
document.getElementById("ndt").hidden=true;
}
function mydate1()
{
d=new Date(document.getElementById("dt").value);
dt=d.getDate();
mn=d.getMonth();
mn++;
yy=d.getFullYear();
document.getElementById("ndt").value=dt+"/"+mn+"/"+yy
document.getElementById("ndt").hidden=false;
document.getElementById("dt").hidden=true;
}
Produzione:
Se stai usando jQuery, ecco un bel metodo semplice
$("#dateField").val(new Date().toISOString().substring(0, 10));
Oppure c'è il vecchio modo tradizionale:
document.getElementById("dateField").value = new Date().toISOString().substring(0, 10)
Perché non utilizzare il controllo della data html5 così com'è, con altri attributi che lo consentono di funzionare bene sui browser che supportano il tipo di data e funziona ancora su altri browser come Firefox che deve ancora supportare il tipo di data
<input type="date" name="input1" placeholder="YYYY-MM-DD" required pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" title="Enter a date in this formart YYYY-MM-DD"/>
Penso di sì, in HTML non esiste la sintassi per il formato GG-MM-AAAA. Fare riferimento a questa pagina http://www.java2s.com/Code/SQLServer/Date-Timezone/FormatdateMmmddyyyyhhmmdp.htm . Un po 'ti aiuterà. Altrimenti usa il selettore di date javascript.
Non lo so per certo, ma penso che dovrebbe essere gestito dal browser in base alle impostazioni di data / ora dell'utente. Prova a impostare il tuo computer per visualizzare le date in quel formato.
$('input[type="date"]').change(function(){
alert(this.value.split("-").reverse().join("-"));
});
Ho fatto molte ricerche e non credo che si possa forzare il formato del file <input type="date">
. Il browser seleziona il formato locale e, a seconda delle impostazioni dell'utente, se la lingua dell'utente è in inglese, la data verrà visualizzata nel formato inglese (mm / gg / aaaa).
A mio parere, la soluzione migliore è utilizzare un plugin per controllare il display.
Jquery DatePicker sembra una buona opzione poiché puoi forzare la localizzazione , il formato della data ...
Ho trovato una risposta leggermente diversa da qualsiasi cosa sopra che ho letto.
La mia soluzione utilizza un po 'di JavaScript e un input html.
La data accettata da un input risulta in una stringa formattata come "aaaa-mm-gg". Possiamo dividerlo e posizionarlo correttamente come nuovo Date ().
Ecco l'HTML di base:
<form id="userForm">
<input type="text" placeholder="1, 2, 3, 4, 5, 6" id="userNumbers" />
<input type="date" id="userDate" />
<input type="submit" value="Track" />
</form>
Ecco JS di base:
let userDate = document.getElementById('userDate').value.split('-'),
parsedDate = new Date((`${userDate[1]}-${userDate[2]}-${userDate[0]}`));
Puoi formattare la data come preferisci. Puoi creare un nuovo Date () e prendere tutte le informazioni da lì ... o semplicemente usare 'userDate []' per costruire la tua stringa.
Tieni presente che alcuni modi in cui una data viene inserita in "new Date ()" produce un risultato imprevisto. (cioè - un giorno indietro)
<html>
<body>
<p id="result">result</p>Enter some text: <input type="date" name="txt" id="value" onchange="myFunction(value)">
<button onclick="f()">submit</button>
<script>
var a;
function myFunction(val){
a = val.split("-").reverse().join("-");
document.getElementById("value").type = "text";
document.getElementById("value").value = a;
}
function f(){
document.getElementById("result").innerHTML = a;
var z = a.split("-").reverse().join("-");
document.getElementById("value").type = "date";
document.getElementById("value").value = z;
}
</script>
</body>
</html>
la risposta breve e diretta è no o non è fuori dagli schemi ma ho escogitato un metodo per utilizzare una casella di testo e il codice JS puro per simulare l'inserimento della data e fare qualsiasi formato tu voglia, ecco il codice
<html>
<body>
date :
<span style="position: relative;display: inline-block;border: 1px solid #a9a9a9;height: 24px;width: 500px">
<input type="date" class="xDateContainer" onchange="setCorrect(this,'xTime');" style="position: absolute; opacity: 0.0;height: 100%;width: 100%;"><input type="text" id="xTime" name="xTime" value="dd / mm / yyyy" style="border: none;height: 90%;" tabindex="-1"><span style="display: inline-block;width: 20px;z-index: 2;float: right;padding-top: 3px;" tabindex="-1">▼</span>
</span>
<script language="javascript">
var matchEnterdDate=0;
//function to set back date opacity for non supported browsers
window.onload =function(){
var input = document.createElement('input');
input.setAttribute('type','date');
input.setAttribute('value', 'some text');
if(input.value === "some text"){
allDates = document.getElementsByClassName("xDateContainer");
matchEnterdDate=1;
for (var i = 0; i < allDates.length; i++) {
allDates[i].style.opacity = "1";
}
}
}
//function to convert enterd date to any format
function setCorrect(xObj,xTraget){
var date = new Date(xObj.value);
var month = date.getMonth();
var day = date.getDate();
var year = date.getFullYear();
if(month!='NaN'){
document.getElementById(xTraget).value=day+" / "+month+" / "+year;
}else{
if(matchEnterdDate==1){document.getElementById(xTraget).value=xObj.value;}
}
}
</script>
</body>
</html>
1- tieni presente che questo metodo funziona solo per browser che supportano il tipo di data.
2- la prima funzione nel codice JS è per i browser che non supportano il tipo di data e impostano l'aspetto su un normale input di testo.
3- se utilizzerai questo codice per più input di data nella tua pagina, cambia l'ID "xTime" dell'input di testo sia nella chiamata di funzione che nell'input stesso con qualcos'altro e ovviamente usa il nome dell'input che desideri per il inviare il modulo.
4-sulla seconda funzione puoi usare qualsiasi formato tu voglia invece di giorno + "/" + mese + "/" + anno ad esempio anno + "/" + mese + "/" + giorno e nell'inserimento di testo usa un segnaposto o un valore come aaaa / mm / gg per l'utente quando viene caricata la pagina.
Per la formattazione in mm-gg-aaaa
AA = date.split ( "-")
date = aa [1] + '-' + aa [2] + '-' + aa [0]
Implementazione pulita senza dipendenze. https://jsfiddle.net/h3hqydxa/1/
<style type="text/css">
.dateField {
width: 150px;
height: 32px;
border: none;
position: absolute;
top: 32px;
left: 32px;
opacity: 0.5;
font-size: 12px;
font-weight: 300;
font-family: Arial;
opacity: 0;
}
.fakeDateField {
width: 100px; /* less, so we don't intercept click on browser chrome for date picker. could also change this at runtime */
height: 32px; /* same as above */
border: none;
position: absolute; /* position overtop the date field */
top: 32px;
left: 32px;
display: visible;
font-size: 12px; /* same as above */
font-weight: 300; /* same as above */
font-family: Arial; /* same as above */
line-height: 32px; /* for vertical centering */
}
</style>
<input class="dateField" id="dateField" type="date"></input>
<div id="fakeDateField" class="fakeDateField"><em>(initial value)</em></div>
<script>
var dateField = document.getElementById("dateField");
var fakeDateField = document.getElementById("fakeDateField");
fakeDateField.addEventListener("click", function() {
document.getElementById("dateField").focus();
}, false);
dateField.addEventListener("focus", function() {
fakeDateField.style.opacity = 0;
dateField.style.opacity = 1;
});
dateField.addEventListener("blur", function() {
fakeDateField.style.opacity = 1;
dateField.style.opacity = 0;
});
dateField.addEventListener("change", function() {
// this method could be replaced by momentJS stuff
if (dateField.value.length < 1) {
return;
}
var date = new Date(dateField.value);
var day = date.getUTCDate();
var month = date.getUTCMonth() + 1; //zero-based month values
fakeDateField.innerHTML = (month < 10 ? "0" : "") + month + " / " + day;
});
</script>
Ecco la soluzione:
<input type="text" id="end_dt"/>
$(document).ready(function () {
$("#end_dt").datepicker({ dateFormat: "MM/dd/yyyy" });
});
speriamo che questo risolva il problema :)
Il formato del valore della data è 'YYYY-MM-DD'
. Vedi il seguente esempio
<form>
<input value="2015-11-30" name='birthdate' type='date' class="form-control" placeholder="Date de naissance"/>
</form>
Tutto ciò che serve è formattare la data in php, asp, ruby o qualsiasi altra cosa per avere quel formato.