function date()
{
var myDate=new Date(document.getElementById('date').value); //get the date from a textfield
var day=myDate.getDate();
var month=myDate.getMonth()+1;
var yr=myDate.getFullYear();
if(dateformat=="dd/mm/yyyy") //checking the date format //
{
document.getElementById('date').value=day + "/" + month + "/" + yr;
}
else
{
document.getElementById('date').value=month+"/"+day + "/" +yr;
}
}
此函数onchange是在文本框日期的onchange mehod中编写的,在更改文本字段时,它应该更改默认设置的日期格式。
如果格式为dd/mm/yyy
,则以该格式更改格式,如果mm/dd/yyy
则更改此格式。我的代码会执行更改,但无法识别月份是哪一个!
例如.. 如果日期格式为mm/dd/yyy
,我输入的日期为11/01/2001' (NOV -1 2001) it changes to
01/11 / 2011`,不应该这样做。
但如果我输入的01-11-2001(2001年1月1日)输入正确,但它改为11/01/2001
如何更改代码以更正此???请帮助!!!
答案 0 :(得分:2)
<强> Demo Fiddle
强>
Javascript代码
function dateChange() {
var e = document.getElementById("dateformat");
var dateformat = e.options[e.selectedIndex].text;
var myDate;
if (dateformat == "dd/mm/yyyy") //checking the date format //
{
var value = document.getElementById('date').value;
var format = value.split("/");
myDate = new Date(format[2], format[1] - 1, format[0]);
var day = myDate.getDate();
var month = myDate.getMonth() + 1;
var yr = myDate.getFullYear();
document.getElementById('date').value = day + "/" + month + "/" + yr;
} else {
myDate = new Date(document.getElementById('date').value);
var day = myDate.getDate();
var month = myDate.getMonth() + 1;
var yr = myDate.getFullYear();
document.getElementById('date').value = month + "/" + day + "/" + yr;
}
document.getElementById('dateStr').innerHTML = myDate.toDateString();
}
输入日期01/02/2014
,其中mm/dd/yyyy
下拉日期 Thu Jan 02 2014
,现在只需将下拉列表更改为dd/mm/yyyy
日期为 Sat Feb 01 2014
实例化Javascript的Date对象需要这种格式new Date(yyyy,mm,dd)
,因此当您使用dd/mm/yyyy
时,您需要手动更改dd & mm
值...
Reference
答案 1 :(得分:0)
我想问题是您要么没有指定dateformat
,要么将其比较错误。
if(dateformat=="dd/mm/yyyy")
如果始终返回false
,您将始终获得第二个选项。
确保dateformat
功能中显示date()
,并确保它实际上获得了您希望它拥有的值。
其次 - 新的Date()函数实际上会在检查日期格式之前解析日期。我想你可能想要反过来做:解析输入日期,检查它的格式,然后输出结果。