Tôi đang tự hỏi liệu có thể đặt định dạng ngày trong <input type="date"></input>
thẻ html không ... Hiện tại nó là yyyy-mm-dd, trong khi tôi cần nó ở định dạng dd-mm-yyyy.
Tôi đang tự hỏi liệu có thể đặt định dạng ngày trong <input type="date"></input>
thẻ html không ... Hiện tại nó là yyyy-mm-dd, trong khi tôi cần nó ở định dạng dd-mm-yyyy.
Câu trả lời:
Bạn không.
Thứ nhất, câu hỏi của bạn không rõ ràng - ý của bạn là định dạng mà nó được hiển thị cho người dùng hay định dạng mà nó được truyền đến máy chủ web?
Nếu ý của bạn là định dạng mà nó được hiển thị cho người dùng, thì điều này thuộc về giao diện người dùng cuối, không phải bất cứ thứ gì bạn chỉ định trong HTML. Thông thường, tôi mong đợi nó dựa trên định dạng ngày mà nó được đặt trong cài đặt ngôn ngữ của hệ điều hành. Không có ý nghĩa gì khi cố gắng ghi đè nó bằng định dạng ưa thích của riêng bạn, vì định dạng mà nó hiển thị (nói chung) là định dạng chính xác cho ngôn ngữ của người dùng và định dạng mà người dùng quen viết / hiểu ngày tháng.
Nếu ý của bạn là định dạng mà nó được truyền tới máy chủ thì bạn đang cố gắng khắc phục sự cố sai. Những gì bạn cần làm là lập trình mã phía máy chủ để chấp nhận ngày ở định dạng yyyy-mm-dd.
input[type=password]
nói rằng “tác nhân người dùng nên che khuất giá trị để những người khác không phải người dùng không thể nhìn thấy nó”, điều này cũng giống như cách nói rằng tác nhân người dùng nên trình bày ngày tháng theo một cách nhất định.
Tôi đã tìm thấy câu hỏi tương tự hoặc câu hỏi liên quan trên stackoverflow
Có cách nào để thay đổi định dạng input type = “date” không?
Tôi đã tìm thấy một giải pháp đơn giản, Bạn không thể cung cấp Định dạng hạt nhưng bạn có thể tùy chỉnh Như thế này.
Mã 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>
Mã CSS:
#dt{text-indent: -500px;height:25px; width:200px;}
Mã 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;
}
Đầu ra:
Nếu bạn đang sử dụng jQuery, đây là một phương pháp đơn giản hay
$("#dateField").val(new Date().toISOString().substring(0, 10));
Hoặc có một cách truyền thống cũ:
document.getElementById("dateField").value = new Date().toISOString().substring(0, 10)
Tại sao không sử dụng kiểm soát ngày html5 như nó vốn có, với các thuộc tính khác cho phép nó hoạt động tốt trên các trình duyệt hỗ trợ loại ngày và vẫn hoạt động trên các trình duyệt khác như firefox chưa hỗ trợ loại ngày
<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"/>
Tôi nghĩ vậy, trong HTML không có cú pháp cho định dạng DD-MM-YYYY. Tham khảo trang này http://www.java2s.com/Code/SQLServer/Date-Timezone/FormatdateMmmddyyyyhhmmdp.htm . Phần nào nó sẽ giúp bạn. Khác sử dụng bộ chọn ngày javascript.
Tôi không biết điều này chắc chắn, nhưng tôi nghĩ rằng điều này được trình duyệt xử lý dựa trên cài đặt ngày / giờ của người dùng. Thử cài đặt máy tính của bạn hiển thị ngày tháng ở định dạng đó.
$('input[type="date"]').change(function(){
alert(this.value.split("-").reverse().join("-"));
});
Tôi đã thực hiện rất nhiều nghiên cứu và tôi không nghĩ rằng ai có thể ép buộc định dạng của <input type="date">
. Trình duyệt chọn định dạng cục bộ và tùy thuộc vào cài đặt của người dùng, nếu ngôn ngữ của người dùng là tiếng Anh, ngày tháng sẽ được hiển thị ở định dạng tiếng Anh (mm / dd / yyyy).
Theo tôi, giải pháp tốt nhất là sử dụng một plugin để kiểm soát màn hình.
Jquery DatePicker có vẻ là một lựa chọn tốt vì bạn có thể buộc bản địa hóa , định dạng ngày tháng ...
Tôi đã đưa ra một câu trả lời hơi khác so với bất kỳ câu nào ở trên mà tôi đã đọc.
Giải pháp của tôi sử dụng một chút JavaScript nhỏ và đầu vào html.
Ngày được chấp nhận bởi một đầu vào dẫn đến một Chuỗi có định dạng là 'yyyy-mm-dd'. Chúng ta có thể tách nó ra và đặt nó một cách chính xác dưới dạng Ngày mới ().
Đây là HTML cơ bản:
<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>
Đây là JS cơ bản:
let userDate = document.getElementById('userDate').value.split('-'),
parsedDate = new Date((`${userDate[1]}-${userDate[2]}-${userDate[0]}`));
Bạn có thể định dạng ngày theo bất kỳ cách nào bạn muốn. Bạn có thể tạo Ngày () mới và lấy tất cả thông tin từ đó ... hoặc chỉ cần sử dụng 'userDate []' để tạo chuỗi của bạn.
Hãy nhớ rằng một số cách mà một ngày được nhập vào 'new Date ()' sẽ tạo ra kết quả không mong muốn. (tức là - chậm một ngày)
<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>
câu trả lời trực tiếp ngắn gọn là không hoặc không nằm ngoài dự đoán nhưng tôi đã nghĩ ra một phương pháp sử dụng hộp văn bản và mã JS thuần túy để mô phỏng đầu vào ngày tháng và thực hiện bất kỳ định dạng nào bạn muốn, đây là mã
<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- xin lưu ý rằng phương pháp này chỉ hoạt động cho trình duyệt hỗ trợ loại ngày.
2- chức năng đầu tiên trong mã JS dành cho trình duyệt không hỗ trợ loại ngày tháng và đặt giao diện thành kiểu nhập văn bản bình thường.
3- nếu bạn sử dụng mã này cho nhiều đầu vào ngày tháng trong trang của mình, vui lòng thay đổi ID "xTime" của đầu vào văn bản trong cả lệnh gọi hàm và bản thân đầu vào thành một thứ khác và tất nhiên hãy sử dụng tên của đầu vào bạn muốn cho gửi biểu mẫu.
4-trên chức năng thứ hai, bạn có thể sử dụng bất kỳ định dạng nào bạn muốn thay vì ngày + "/" + tháng + "/" + năm, chẳng hạn như năm + "/" + tháng + "/" + ngày và trong đầu vào văn bản sử dụng trình giữ chỗ hoặc giá trị như yyyy / mm / dd cho người dùng khi tải trang.
Để định dạng trong mm-dd-yyyy
aa = date.split ("-")
date = aa [1] + '-' + aa [2] + '-' + aa [0]
Triển khai sạch sẽ không có phụ thuộc. 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>
Đây là giải pháp:
<input type="text" id="end_dt"/>
$(document).ready(function () {
$("#end_dt").datepicker({ dateFormat: "MM/dd/yyyy" });
});
hy vọng điều này sẽ giải quyết vấn đề :)
Định dạng của giá trị ngày là 'YYYY-MM-DD'
. Xem ví dụ sau
<form>
<input value="2015-11-30" name='birthdate' type='date' class="form-control" placeholder="Date de naissance"/>
</form>
Tất cả những gì bạn cần là định dạng ngày tháng bằng php, asp, ruby hoặc bất cứ thứ gì để có định dạng đó.