Html <input type="date"></input>
etiketinde tarih formatını ayarlamanın mümkün olup olmadığını merak ediyorum ... Şu anda bu yyyy-aa-gg iken, gg-aa-yyyy formatında ihtiyacım var.
Html <input type="date"></input>
etiketinde tarih formatını ayarlamanın mümkün olup olmadığını merak ediyorum ... Şu anda bu yyyy-aa-gg iken, gg-aa-yyyy formatında ihtiyacım var.
Yanıtlar:
Yapmıyorsun.
Birincisi, sorunuz belirsiz - kullanıcıya görüntülendiği formatı mı yoksa web sunucusuna iletildiği formatı mı kastediyorsunuz?
Kullanıcıya görüntülendiği formatı kastediyorsanız, bu, HTML'de belirttiğiniz hiçbir şeyi değil, son kullanıcı arayüzüne bağlıdır. Genellikle, işletim sistemi yerel ayarlarında ayarlandığı tarih biçimine dayalı olmasını beklerim. Görüntülediği biçim (genel olarak konuşulursa) kullanıcının yerel ayarı ve kullanıcının tarihleri yazmak / anlamak için kullandığı biçim için doğru biçim olduğundan, kendi tercih ettiğiniz biçimle onu geçersiz kılmaya çalışmanın bir anlamı yoktur.
Sunucuya iletildiği biçimi kastediyorsanız, yanlış sorunu çözmeye çalışıyorsunuz demektir. Yapmanız gereken, sunucu tarafındaki kodu yyyy-aa-gg biçiminde tarihleri kabul edecek şekilde programlamaktır.
input[type=password]
"kullanıcı aracısının değeri gizlemesi gerektiğini, böylece kullanıcı dışındaki kişilerin görmemesi gerektiğini" söyler, bu da kullanıcı aracısının tarihi belirli bir şekilde sunması gerektiğini söylemek kadar sunumdur.
Stackoverflow'da aynı soruyu veya ilgili soruyu buldum
Giriş türü = "tarih" biçimini değiştirmenin bir yolu var mı?
Basit bir çözüm buldum, Partikül Formatı veremezsiniz ama bu şekilde özelleştirebilirsiniz.
HTML Kodu:
<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>
CSS Kodu:
#dt{text-indent: -500px;height:25px; width:200px;}
Javascript Kodu:
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;
}
Çıktı:
JQuery kullanıyorsanız, işte güzel ve basit bir yöntem
$("#dateField").val(new Date().toISOString().substring(0, 10));
Veya eski geleneksel yol var:
document.getElementById("dateField").value = new Date().toISOString().substring(0, 10)
Tarih türünü destekleyen ve firefox gibi henüz tarih türünü desteklemeyen diğer tarayıcılarda hala çalışmasına izin veren diğer özelliklerle birlikte html5 tarih kontrolünü olduğu gibi neden kullanmıyorsunuz?
<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"/>
Öyle düşünüyorum, HTML'de GG-AA-YYYY biçimi için bir sözdizimi yok. Bu sayfaya bakın http://www.java2s.com/Code/SQLServer/Date-Timezone/FormatdateMmmddyyyyhhmmdp.htm . Size biraz yardımcı olacak. Aksi takdirde javascript tarih seçiciyi kullanın.
Bunu kesin olarak bilmiyorum, ancak bunun kullanıcının tarih / saat ayarlarına göre tarayıcı tarafından ele alınması gerektiğini düşünüyorum. Bilgisayarınızı, tarihleri bu biçimde görüntüleyecek şekilde ayarlamayı deneyin.
$('input[type="date"]').change(function(){
alert(this.value.split("-").reverse().join("-"));
});
Çok fazla araştırma yaptım ve birinin formatını zorlayabileceğini sanmıyorum <input type="date">
. Tarayıcı yerel biçimi seçer ve kullanıcı ayarlarına bağlı olarak, kullanıcının dili İngilizce ise, tarih İngilizce biçiminde (aa / gg / yyyy) görüntülenecektir.
Bence en iyi çözüm, ekranı kontrol etmek için bir eklenti kullanmaktır.
Jquery DatePicker , yerelleştirmeyi , tarih biçimini zorlayabileceğiniz için iyi bir seçenek gibi görünüyor ...
Yukarıda okuduğum her şeyden biraz farklı bir cevap buldum.
Benim çözümüm küçük bir JavaScript ve bir html girişi kullanıyor.
Bir girdi tarafından kabul edilen Tarih, 'yyyy-aa-gg' olarak biçimlendirilmiş bir Dize ile sonuçlanır. Onu bölebilir ve yeni bir Date () olarak düzgün bir şekilde yerleştirebiliriz.
İşte temel HTML:
<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>
İşte temel JS:
let userDate = document.getElementById('userDate').value.split('-'),
parsedDate = new Date((`${userDate[1]}-${userDate[2]}-${userDate[0]}`));
Tarihi istediğiniz gibi biçimlendirebilirsiniz. Yeni bir Tarih () oluşturabilir ve oradaki tüm bilgileri alabilir ... veya dizenizi oluşturmak için sadece 'userDate []' kullanabilirsiniz.
Unutmayın, bir tarihin 'new Date ()' içine girilmesinin bazı yolları beklenmedik bir sonuç verir. (yani - bir gün geride)
<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>
kısa doğrudan cevap hayır veya kutunun dışında değil, ancak tarih girişini simüle etmek ve istediğiniz herhangi bir formatı yapmak için bir metin kutusu ve saf JS kodu kullanmak için bir yöntem buldum, işte kod
<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- Lütfen bu yöntemin yalnızca tarih türünü destekleyen tarayıcı için çalıştığını unutmayın.
2- JS kodundaki ilk işlev, tarih türünü desteklemeyen ve görünümü normal bir metin girişine ayarlayan tarayıcı içindir.
3- Bu kodu sayfanızda birden fazla tarih girişi için kullanacaksanız, lütfen hem işlev çağrısında hem de girişin kendisinde metin girişinin ID "xTime" değerini başka bir şeyle değiştirin ve tabii ki için istediğiniz girişin adını kullanın. form gönder.
4-ikinci işlevde gün + "/" + ay + "/" + yıl yerine istediğiniz herhangi bir biçimi kullanabilirsiniz, örneğin yıl + "/" + ay + "/" + gün ve metin girişinde aşağıdaki gibi bir yer tutucu veya değer kullanın sayfa yüklendiğinde kullanıcı için yyyy / aa / gg.
Aa-gg-yyyy olarak biçimlendirme için
aa = tarih.split ("-")
tarih = aa [1] + '-' + aa [2] + '-' + aa [0]
Bağımlılık olmadan temiz uygulama. 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>
Bu yyyy-aa-gg formatını javascript'te split yöntemi kullanarak gg-aa-yyyy olarak değiştirebiliriz.
let dateyear= "2020-03-18";
let arr = dateyear.split('-') //now we get array of these and we can made in any format as we want
let dateFormat = arr[2] + "-" + arr[1] + "-" + arr[0] //In dd-mm-yyyy format
İşte çözüm:
<input type="text" id="end_dt"/>
$(document).ready(function () {
$("#end_dt").datepicker({ dateFormat: "MM/dd/yyyy" });
});
umarım bu sorunu çözecektir :)
Tarih değerinin biçimi 'YYYY-MM-DD'
. Aşağıdaki örneğe bakın
<form>
<input value="2015-11-30" name='birthdate' type='date' class="form-control" placeholder="Date de naissance"/>
</form>
İhtiyacınız olan tek şey tarihi php, asp, ruby veya bu formata sahip olmak için herhangi bir şekilde formatlamaktır.