【发布时间】:2018-08-07 23:40:06
【问题描述】:
当当前字段值为 12-31-9999 且 yearRange 为 2000:+1 时,DatePicker 无法正确处理 currentDate 的计算。当我单击该字段以打开 DatePicker 时,currentDate 的结果变为 1-1-2000。因此,DatePicker 似乎将日期包装到 yearRange 的开始。但是,如果我删除 yearRange,则 DatePicker 默认为 -10:+10 的范围,这导致年份为 9989:10009。
当我单击包含 12-31-9999 的字段时,我更希望 DatePicker 显示今天的日期。注意:逃出场地时不得更改。这可能吗?
$(".datePicker").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: "yy-mm-dd",
yearRange: 2000:+1
});
【问题讨论】:
-
“包含 12-31-9999 的字段。”...确实真正的问题是为什么您的字段包含垃圾日期而不是 NULL?
-
12-31-9999 的日期不是垃圾日期 - 它被用作结束日期,与真正的开始日期配对。这样做的目的是搜索特定日期之间的记录,而不必在谓词中包含 ISNULL。
-
我明白了,我猜这是一种方法,但正如您所见,它会导致其他问题。如果没有设定结束日期,那么从数据质量的角度来看,推荐的方法是使用 NULL,大多数人会争辩说,不必将 ISNULL 放入查询中并不足以成为污染日期不的数据的充分理由真的很真实。然后,对于程序的其他部分(例如日期选择器)来说,区分什么是有意义的日期和什么只是要忽略的占位符就变得更加困难了。这是最佳做法,但最终还是见仁见智。
-
恕我直言,我没有发布问题来对“垃圾”日期的有效性进行诉讼。更重要的是,DatePicker 表现出不一致的行为,当日期为 12-31-9999 且 yearRange 为 2000:+1 时,它会将日期滚动到开头,但当未指定 yearRange 时,它会继续增加超过 9999 的年份。这是 datepicker 中的错误还是我指定了错误的 yearRange?
-
我提出这个问题的原因是它可以说是 XY 问题的一个例子 (xyproblem.info) - 寻找一个问题的解决方案,如果你做了其他不同的事情就不会存在首先。如果你只是有空白/空而不是这些虚假的结束日期(没有事件或时间段真的在 9999 结束,在现实生活中没有用户真正想要或要求它,让我们明确一点)那么日期选择器的问题就会消失
标签: jquery asp.net asp.net-mvc datepicker