我有这段代码:
<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 :(得分: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)