html <input type="date"></input>
태그 에서 날짜 형식을 설정할 수 있는지 궁금합니다 ... 현재 yyyy-mm-dd이지만 dd-mm-yyyy 형식이 필요합니다.
html <input type="date"></input>
태그 에서 날짜 형식을 설정할 수 있는지 궁금합니다 ... 현재 yyyy-mm-dd이지만 dd-mm-yyyy 형식이 필요합니다.
답변:
당신은하지 않습니다.
첫째, 질문이 모호합니다. 사용자에게 표시되는 형식을 의미합니까, 아니면 웹 서버로 전송되는 형식을 의미합니까?
사용자에게 표시되는 형식을 의미하는 경우 이는 HTML에서 지정하는 것이 아니라 최종 사용자 인터페이스에 달려 있습니다. 일반적으로 운영 체제 로캘 설정에 설정된 날짜 형식을 기반으로 할 것으로 예상합니다. 표시되는 형식은 (일반적으로 말해서) 사용자의 로케일과 사용자가 날짜를 작성 / 이해하는 데 사용되는 형식에 대해 올바른 형식이므로 선호하는 형식으로 재정의하는 것은 의미가 없습니다.
서버로 전송되는 형식을 의미하는 경우 잘못된 문제를 해결하려는 것입니다. 당신이해야 할 일은 yyyy-mm-dd 형식의 날짜를 받아들이도록 서버 측 코드를 프로그래밍하는 것입니다.
input[type=password]
"사용자 에이전트가 값을 가려서 사용자가 아닌 다른 사람이 볼 수 없도록해야합니다."라고 말하고 있는데, 이는 사용자 에이전트가 특정 방식으로 날짜를 표시해야한다고 말하는 것과 같은 표현입니다.
stackoverflow에서 동일한 질문 또는 관련 질문을 찾았습니다.
입력 유형 = "날짜"형식을 변경하는 방법이 있습니까?
하나의 간단한 해결책을 찾았습니다. 미립자 형식을 줄 수는 없지만 이렇게 사용자 지정할 수 있습니다.
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>
CSS 코드 :
#dt{text-indent: -500px;height:25px; width:200px;}
자바 스크립트 코드 :
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;
}
산출:
jQuery를 사용하는 경우 여기에 좋은 간단한 방법이 있습니다.
$("#dateField").val(new Date().toISOString().substring(0, 10));
또는 오래된 전통적인 방법이 있습니다.
document.getElementById("dateField").value = new Date().toISOString().substring(0, 10)
날짜 유형을 지원하는 브라우저에서 정상적으로 작동하고 아직 날짜 유형을 지원하지 않는 파이어 폭스와 같은 다른 브라우저에서 계속 작동하도록하는 다른 속성과 함께 html5 날짜 제어를 그대로 사용하지 않는 이유
<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"/>
HTML에는 DD-MM-YYYY 형식에 대한 구문이 없다고 생각합니다. 이 페이지 http://www.java2s.com/Code/SQLServer/Date-Timezone/FormatdateMmmddyyyyhhmmdp.htm을 참조 하십시오 . 어느 정도 도움이 될 것입니다. 그렇지 않으면 자바 스크립트 날짜 선택기를 사용하십시오.
$('input[type="date"]').change(function(){
alert(this.value.split("-").reverse().join("-"));
});
나는 많은 연구를했지만 <input type="date">
. 브라우저는 로컬 형식을 선택하고 사용자 설정에 따라 사용자의 언어가 영어 인 경우 날짜는 영어 형식 (mm / dd / yyyy)으로 표시됩니다.
제 생각에 가장 좋은 해결책은 플러그인을 사용하여 디스플레이를 제어하는 것입니다.
Jquery DatePicker 는 현지화 , 날짜 형식을 강제 할 수 있기 때문에 좋은 옵션으로 보입니다 .
나는 내가 읽은 것보다 약간 다른 대답을 내놓았다.
내 솔루션은 약간의 JavaScript와 html 입력을 사용합니다.
입력에 의해 승인 된 날짜는 'yyyy-mm-dd'형식의 문자열이됩니다. 분할하여 new Date ()로 적절하게 배치 할 수 있습니다.
다음은 기본 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>
다음은 기본 JS입니다.
let userDate = document.getElementById('userDate').value.split('-'),
parsedDate = new Date((`${userDate[1]}-${userDate[2]}-${userDate[0]}`));
원하는 방식으로 날짜 형식을 지정할 수 있습니다. 새 Date ()를 만들고 거기에서 모든 정보를 가져 오거나 단순히 'userDate []'를 사용하여 문자열을 만들 수 있습니다.
날짜를 'new Date ()'에 입력하면 예기치 않은 결과가 발생한다는 점을 명심하십시오. (즉-하루 뒤)
<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>
짧은 직접 대답은 아니요 또는 상자에서 나오지 않지만 텍스트 상자와 순수한 JS 코드를 사용하여 날짜 입력을 시뮬레이션하고 원하는 형식을 수행하는 방법을 생각해 냈습니다. 여기에 코드가 있습니다.
<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-이 방법은 날짜 유형을 지원하는 브라우저에서만 작동합니다.
2- JS 코드의 첫 번째 기능은 날짜 유형을 지원하지 않고 모양을 일반 텍스트 입력으로 설정하는 브라우저 용입니다.
3- 페이지의 여러 날짜 입력에이 코드를 사용할 경우 함수 호출과 입력 자체 모두에서 텍스트 입력의 ID "xTime"을 다른 것으로 변경하고 물론 원하는 입력 이름을 사용하십시오. 양식 제출.
4- 두 번째 함수에서는 day + "/"+ month + "/"+ year 예를 들어 year + "/"+ month + "/"+ day 대신 원하는 형식을 사용할 수 있으며 텍스트 입력에서 자리 표시 자 또는 값을 다음과 같이 사용하십시오. 페이지가로드 될 때 사용자의 yyyy / mm / dd입니다.
종속성없이 깔끔한 구현. 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>
해결책은 다음과 같습니다.
<input type="text" id="end_dt"/>
$(document).ready(function () {
$("#end_dt").datepicker({ dateFormat: "MM/dd/yyyy" });
});
이 문제가 해결되기를 바랍니다. :)