javascript日期格式为dd / mm / yyyy

时间:2013-07-15 11:29:20

标签: javascript date textbox

我有这段代码:

<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?

2 个答案:

答案 0 :(得分:1)

Date构造函数无法直接采用dd/mm/yyyy格式,因此您必须解析日期输入:

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

上面从文本输入中解析日,月和年,然后将每个值传递给Date构造函数。这是有效的,因为这是构造函数的重载之一。请注意,月份为零,因此您需要将其减1。

来自MDN

  

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

答案 1 :(得分:0)

试试这个

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

它的工作原理见fiddle