更改标识日期和月份的日期格式?

时间:2014-06-04 09:35:33

标签: javascript html

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

如何更改代码以更正此???请帮助!!!

2 个答案:

答案 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()函数实际上会在检查日期格式之前解析日期。我想你可能想要反过来做:解析输入日期,检查它的格式,然后输出结果。