目前用户输入缩短版本(06/05/17)时 自动默认为(06/05/0017)而不是按日历选择它。
应该是06/05/2017 如果用户写的06/05/87应该是06/05/2087
<asp:TextBox ID="txtFromDate" runat="server" MaxLength="10" placeholder="DD/MM/YYYY" CssClass="form-control"></asp:TextBox>
<span class="input-group-addon calendar-icon" id="FromCalSpan"><i class="fa fa-calendar">
</i></span>
答案 0 :(得分:0)
如果您确定用户要输入2000以上的年份。您可以拆分字符串并将2000添加到最后一个拆分字符串
private void txtFromDate_TextChanged(object sender, EventArgs e)
{
string[] words;
if (txtFromDate.Text.Contains("/"))
{
words = txtFromDate.Text.Split("/");
}
words[2] = (int.Parse(words[2].ToString()) + 2000).ToString();
txtFromDate.Text = words[0].ToString() + "/" + words[1].ToString() + "/" + words[2].ToString();
}
我已经在代码隐藏中完成了,因为你没有提到过Webform或MVC。但是我强烈建议你使用javascript来解决这两个问题。
答案 1 :(得分:0)
您可以使用服务器端或客户端方法来解决2位数年份转换,如下所示,包括对日期长度进行简单检查:
<强>一个。服务器端
此方法利用System.Globalization
命名空间中的Calendar
类,它将日期输入转换为4位数年份。
protected void txtFromDate_TextChanged(object sender, EventArgs e)
{
String date = txtFromDate.Text;
String[] digits = date.Split('/');
var culture = new CultureInfo(CultureInfo.CurrentCulture.Name);
culture.Calendar.TwoDigitYearMax = 2099; // 4 digits range between 2000 & 2099
int fourDigitYear = culture.Calendar.ToFourDigitYear(Convert.ToInt32(digits[2]));
// uses 4 digit year if the text field has 10 characters (2 digits day, 2 digits month, 2 date separators & 4 digits year)
if (date.Length == 10)
{
fourDigitYear = digits[2];
}
txtFromDate.Text = words[0].ToString() + "/" + words[1].ToString() + "/" + fourDigitYear;
}
<强>湾客户端
这种jQuery方法使用普通字符串连接和标准Date
方法。请注意,JS中的month
由索引0(1月)而不是1开始,因此需要在日期调整期间进行减法和添加过程。
<script type="text/javascript">
$(document).ready(function () {
$("<%= txtFromDate.ClientID %>").change(function () {
var data = $(this).val();
var len = data.length; // check if it's 2 digits or 4 digits year
var day = data.substr(0, 2);
var month = data.substr(3, 2) - 1;
var year = 0;
if (len == 8) {
year = parseInt("20" + data.substr(6, 2));
} else {
year = parseInt(data.substr(6, 4));
}
var date = new Date(year, month, day);
$(this).val(date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear());
});
});
</script>