如何强制输入日期格式为dd/mm/yyyy?

15

我有一个小问题。我正在开发一个网站系统,表单字段类型为日期让我头疼不已。该系统仅适用于巴西用户,因此日期格式应为dd/mm/yyyy。当从使用葡萄牙语的计算机访问网站时,HTML表单字段类型的日期按照我想要的方式工作。但是,当在英语语言的计算机上访问网站时,日期格式变为yyyy-mm-dd。这是一个问题,因为有时用户甚至没有注意到计算机的日期格式已更改,但用户希望以dd/mm/yyyy的格式查看日期。

我需要的是,无论在何种机器设置下访问网站,格式均为dd/mm/yyyy,且不使用任何额外的JavaScript库。

使用的代码为:

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

这里有一个类似的问题:https://dev59.com/Lmw05IYBdhLWcg3w3lkl - dippas
3个回答

6
没有这样的情况。 input type=date 将选择您系统默认设置,并在 GUI 中显示,但始终以 ISO 格式 (yyyy-mm-dd) 存储值。此外,请注意,并非所有浏览器都支持此功能,因此不建议仅依赖此输入类型。
如果这是企业问题,请强制所有计算机使用本地区域格式 (dd-mm-yyyy),您的 UI 将以此格式显示 (更改区域设置后请参阅 wufoo 链接,在重新打开浏览器之前)。

最好的选择仍然是使用基于JavaScript的组件,这将允许您自定义任何您想要的内容。


2

为了保持日期格式的一致性,无论计算机设置如何,您必须使用3个不同的输入元素分别捕获日、月和年。但是,您需要验证用户输入以确保您拥有有效的日期,如下所示:

<input id="txtDay" type="text" placeholder="DD" />

<input id="txtMonth" type="text" placeholder="MM" />

<input id="txtYear" type="text" placeholder="YYYY" />
<button id="but" onclick="validateDate()">Validate</button>


  function validateDate() {
    var date = new Date(document.getElementById("txtYear").value, document.getElementById("txtMonth").value, document.getElementById("txtDay").value);

    if (date == "Invalid Date") {
        alert("jnvalid date");

    }
}

如果你要有不同的输入,你应该至少为月份设置一个下拉列表,显示月份的名称(或缩写)。这样控件就能自我说明,包括那些不识别“placeholder”的老版浏览器。此外,请确保你的服务器端脚本拒绝使用两位数字表示年份。这样,如果有人尝试使用YMD格式,它将捕获错误,并消除任何世纪歧义的可能性。 - Stewart

-11

演示:http://jsfiddle.net/shfj70qp/

//dd/mm/yyyy 

var date = new Date();
var month = date.getMonth();
var day = date.getDate();
var year = date.getFullYear();

console.log(month+"/"+day+"/"+year);

我认为你需要重新阅读问题。 - powerbuoy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接