首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置不带日或月的日期

设置不带日或月的日期
EN

Stack Overflow用户
提问于 2012-08-25 11:07:12
回答 5查看 1.9K关注 0票数 0

我需要用户能够选择一个日期,但它可能发生的情况下,用户不知道确切的日期或月份,但年。

我正在考虑创建一个带有下拉列表的选择器,每个下拉列表中都有可选项目,并将其保存在DateTime属性中。但我不知道如何指定未知部分的值。

我可以使用单独的int?字段来表示日、月和年,但我想知道是否有更好的方法。

有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2012-08-25 11:40:27

DateTime必须是有效的日期,所以您不能只在其中输入年份,至少还需要日期和月份。这在您的情况下是有问题的,因为您无法区分日期01/01/2012和2012年。我不明白如何将这些值保存在DateTime中,除非您还拥有日期和月份。

这里最好的解决方案是,如您所说,将这些值保存在int中,并将值0放在未指定的字段中。

票数 4
EN

Stack Overflow用户

发布于 2012-08-25 12:02:34

在用户界面上,可以使用日期范围而不是单个日期吗?

如果他们只知道年份,则选择该年的1/1到12/31之间的范围。无论哪种方式,最好选择完整的日期,而不是无效的/部分的日期。

票数 0
EN

Stack Overflow用户

发布于 2012-08-25 12:04:52

是的,使用单独的字段。值为select month、1、2、3...12在mdl中,并在ddl中选择日期1,2,3...31。在ydl中没有选择年份。而是保留一些理想值,比如选择当前年份

我所说的ddl、mdl、ydl分别指的是日、月、年的下拉列表名称。

显示用户指南标签,说明年份选择是必选的

可选(示例代码):

当用户提交时,为了检查月份和日期,您应该验证为

代码语言:javascript
运行
复制
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 (string)来实现您想要使用的目的

记住,在这里你不应该使用dateDatime,而不是像userDate这样的字符串,因为用户输入将变成像2012-01-01这样的固定日期。在这种情况下,您不能只使用year

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12118835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档