-1

我有这段代码:

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

4

2 回答 2

1

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

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

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

来自MDN

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

于 2013-07-15T11:39:20.423 回答
-1

尝试这个

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

它的工作原理看到这个小提琴

于 2013-07-15T11:41:45.510 回答