Asp.net mvc 在DatePicker中获取上个月

Asp.net mvc 在DatePicker中获取上个月,asp.net-mvc,kendo-datepicker,Asp.net Mvc,Kendo Datepicker,问题是:我有一个Kendo.DatePicker,充当过滤器,它的默认值在控件中设置为 .Value(DateTime.Now.AddMonths(-1)) 当我们点击“清除过滤器”按钮时,我希望日期返回到默认值,它总是CurrentDate-1个月 我有这个,以获取当前日期(从中获取) 那么,我怎样才能在这之前得到飞蛾呢?我试着玩getMonth和setMonth,但没有成功。C#的AddMonths改变了DateTime的月份,这与JavaScript的setMonth非常相似。但是,重要

问题是:我有一个Kendo.DatePicker,充当过滤器,它的默认值在控件中设置为

.Value(DateTime.Now.AddMonths(-1))
当我们点击“清除过滤器”按钮时,我希望日期返回到默认值,它总是CurrentDate-1个月

我有这个,以获取当前日期(从中获取)

那么,我怎样才能在这之前得到飞蛾呢?我试着玩
getMonth
setMonth
,但没有成功。

C#的
AddMonths
改变了
DateTime
的月份,这与JavaScript的
setMonth
非常相似。但是,重要的是,
AddMonths
考虑了一些情况,例如需要向前/向后移动一年,或者当特定日期对该月无效时会发生什么。例如,如果从2017年3月29日减去一个月,则该年没有2月29日。因此,日期组件也需要更改为28。如果是闰年,那么也会有,所以你也必须考虑到这一点

相比之下,JavaScript的
setMonth
相对来说是愚蠢的。它实际上只是修改月份,然后根据需要让日期溢出。例如,在前面的场景中,从2017年3月29日减去一个月,JavaScript实际上会给您2017年3月1日,因为它一直到2月1日,然后添加了29天的日期组件。由于2月只有28天,它又回到了3月。至少考虑到闰年是明智的,所以在像2016年这样的一年里,你实际上会在2月29日结束

无论如何,JavaScript日期非常糟糕。如果你真的想和他们一起工作,我建议你使用一个像这样的库,它可以巧妙地处理这些情况

不过,您最好的解决方案可能是简单地保留C#中的默认值,这样您就不必担心以后必须通过JavaScript计算它。例如,您可以添加一个
data-*
属性,如:

.HtmlAttributes(new { data_default = DateTime.Now.AddMonths(-1) })

然后,您只需从输入中读取该值,并在清除该值时将控件设置为该值。

您基本上必须使用JavaScript获得所需的日期,请参见:@DanDumitru我看到了类似的答案,但我想我错过了一点。以前没有使用过getMonth,现在可以了:)谢谢。2月份的版本与我的情况并不相关,因为它将在3月1日发行,这符合它的意图。我选择了@DanDumitru链接的解决方案,因为我希望在函数中计算日期,每当有人想清除过滤器时,它都会清除所有过滤器。
.HtmlAttributes(new { data_default = DateTime.Now.AddMonths(-1) })