设置日期无日期或月份
问题描述:
我需要用户能够选择一个日期,但可能发生的情况是用户不知道确切的日期或月份,而是年份。设置日期无日期或月份
我正在考虑创建一个选择器,每个选项都带有可选项目,并将其保存在DateTime
属性中。但我不知道如何指定未知部分的值。
我可以使用单独的int?
字段的日,月和年,但我想知道是否有更好的方法。
任何想法?
答
在用户界面上,您可以使用日期范围而不是单个日期吗?
如果他们只知道年份,则选择一年中1/1至12/31的范围。无论哪种方式,选择一个完整的日期,而不是一个无效的/部分的日期是一个不错的主意。
答
是使用单独的字段。具有选定月份的值,在mdl中为1,2,3 ... 12,在ddl中选择日期为1,2,3 ... 31。没有在ydl中选择年份。而是继续像当年一些理想值选择
通过DDL,MDL,YDL我的意思是你的下拉列表在一天中的名称,月,年分别
显示用户手册标签当年的选择是强制性
可选(示例代码):
当用户提交,检查一个月,一天,你应该做的审定
string userDate = ""
if (ddl.SelectedIndex>0)
{ //then you can try to validate date as
try
{
string temp=ydl.SelectedItem.ToString()+"-"+ydl.SelectedItem.ToString();
temp += " "+ydl.SelectedItem.ToString()
DateTime dt=Convert.ToDateTime(temp);
userDate=dt.ToString("yyyy-MM-dd");
}
catch
{
//Display message on some label that chosen date is invalid
return;
}
}
else
{
userDate=ydl.SelectedItem.ToString();
if (mdl.SelectedIndex>0)
{
userDate += mdl.SelectedItem.ToString();
}
}
现在你可以userDate(字符串)为你想要使用的目的
在这里记住,你不应该使用dateDatime,而不是像userDate这样的字符串,因为用户输入将变得像2012-01-01一个固定的日期。在这种情况下,你不能只使用一年
答
我建议你创建一个自定义类。
public class CustomDate
{
public int? Day { get; set; }
public int? Month { get; set; }
public int Year { get; set; }
public DateTime? Date
{
get
{
if(Year > 0 && Day.HasValue && Day.Value > 0
&& Month.HasValue && Month.Value > 0)
return new DateTime(Year, Month.Value, Day.Value);
return null;
}
}
}
答
试试这个在CSS
input[type=date] {
::-webkit-datetime-edit-month-field[disabled]{}
::-moz-datetime-edit-day-field[disabled]{};
::-ms-datetime-edit-day-field[disabled]{};
::-o-datetime-edit-day-field[disabled]{};
}
WPF中,的WinForms和ASP.Net? –
对不起,ASP.Net MVC3。我更新了标签。 – kerzek
请更改您的问题。 – adatapost