2013-07-15 180 views
-1

我有这样的位的代码:JavaScript的日期格式为日/月/年

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox runat="server" ID="TextBox1" Text="10/20/2013" onchange="javascript:MyFunc();"></asp:TextBox> 
     <asp:TextBox runat="server" ID="TextBox2" Text=""></asp:TextBox> 
    </div> 
    </form> 
    <script type="text/javascript"> 
     function MyFunc() { 
      MyTextBox = document.getElementById("<%= TextBox1.ClientID %>"); 
      MyTextBox2 = document.getElementById("<%= TextBox2.ClientID %>"); 
      var date = new Date(MyTextBox.value); 
      var day = date.getDate(); 
      var month = date.getMonth() + 1; 
      var year = date.getFullYear() + 1; 
      MyTextBox2.value = day + "/" + month + "/" + year; 
     } 
    </script> 
</body> 

这基本上是2个文本框和当所述第一文本框日期被更新时,第二文本框的值变为从文本框1的日期+ 1年。

该代码工作正常,除了一个问题。在Textbox1中,日期必须是美国格式mm/dd/yyyy,这是错误的。 例如,如果我想将20/10/2013更改为20/10/2014,则必须在第一个文本框中输入10/20/2013。

我怎样才能让它为dd/mm/yyyy工作?

+0

你尝试过什么?你了解当前的代码是如何工作的吗? – zerkms

+0

并没有合适的已经提供的答案,这已发现此问题@ stackoverflow? – KooiInc

+0

是的,尝试过Date()的toString()方法,但不知道如何以dd/mm/yyyy格式获取它。我可以得到它像2013年7月15日例如 –

回答

1

Date构造不能直接拿dd/mm/yyyy格式,所以你将不得不解析日期输入:

var temp = MyTextBox.value.split('/'); 
var date = new Date(temp[2], temp[1]-1, temp[0]); 

以上分析的日,月和年从文本输入,然后通过每个值的Date构造函数。这是有效的,因为这是构造函数的重载之一。需要注意的是一个月零基础,所以你需要通过1

递减它从MDN

新的日期(年,月,日[时,分,秒,毫秒]);

+0

嗯它有种作品,但是当我在20/10/2014投入它20/06/2023。任何想法为什么? –

+0

看我的编辑:你需要递减1而不递增,所以'temp [1] -1'。 – MrCode

+0

谢谢。那是它:) –

0

试试这个

var s1 = [d1.getDate(), d1.getMonth(), d1.getFullYear()].join('/'); 

它的工作原理看这个fiddle

+0

显示不是问题。这部分工作正常。从Textbox1获取正确格式的日期是问题所在。 –

相关问题