获取 Javascript 中的最后一周日期

Get the last week date in Javascript

这是我的问题:

我有 2 个 RadDatePickers,见下文:

      <telerik:RadDatePicker ID="rdpTimeOfDayFrom" runat="server" Culture="English (United States)">          
         <DateInput  runat="server" DateFormat="MM/dd/yyyy"></DateInput>  
        </telerik:RadDatePicker>  
     <telerik:RadDatePicker ID="rdpTimeOfDayTo" runat="server" Culture="English (United States)">          
         <DateInput runat="server" DateFormat="MM/dd/yyyy"></DateInput>  
    </telerik:RadDatePicker> 

通过使用 JavaScript 我想获取上周日期并将其设置在 rdpTimeOfDayFrom 控件中,问题是格式为: 2015 年 3 月 9 日星期一 17:36:58 GMT-0700(太平洋夏令时)

如何使用 Javascript 以那种格式 ("yyyy/MM/dd") 设置 return 日期?我问的原因是因为在我返回 post 并尝试获取控件中的内容后,它显示如下: 3/9/2015 12:00:00AM 我只需要日期。

这是我的 JS 函数:

使用 MomentJS

  function SetLastWeekDate(sender, args) {
    var lastWeekDate = $find("<%=btnTimeOfDayLastWeek.ClientID %>");
    var fromDate = $find("<%=rdpTimeOfDayFrom.ClientID %>");
    var toDate = $find("<%=rdpTimeOfDayTo.ClientID %>");
    var today = new Date();
    if (lastWeekDate.get_checked()) {
        fromDate.clear();
        toDate.clear();
        //var lastWeekPeriod = new Date(today.getFullYear(), today.getMonth(),today.getDate() - 7);
        var lastWeekPeriod = moment().subtract(7, 'd').format('l');
        fromDate.set_selectedDate(lastWeekPeriod);
        toDate.set_selectedDate(today);
    }
}

如果我理解得很好,你需要将当前日期减去7天。


怎么样:


解决方案 1原版 Javascript

var d = new Date();           // <- Get the current date
d.setDate(d.getDate() - 7);   // <- Substract 7 days

然后格式化(这部分没有库有点奇怪):

var year = d.getFullYear(),
    month = ('00' + (d.getMonth() + 1)).slice(-2),
    day = ('00' + d.getDate()).slice(-2);

var formattedDate = year + '/' + month + '/' + day;

解释:

  • d.getMonth() 是从零开始的,所以我们必须加一个
  • ('00' + *number*).slice(-2) 用于将数字格式化为两位数。


解决方案 2

如果您经常需要对日期进行一些计算或格式化,请考虑使用像 momentjs 或 Date.js 这样的库。这将真正简化任务。例如,用 momentjs 减去 7 天并将日期格式化为 YYYY/MM/DD 看起来像这样:

moment().subtract(7, 'days').format('YYYY/MM/DD');


这很容易做到 MomentJs

 function SetLastWeekDate(sender, args) {
    var lastWeekDate = $find("<%=btnTimeOfDayLastWeek.ClientID %>");
    var fromDate = $find("<%=rdpTimeOfDayFrom.ClientID %>");
    var toDate = $find("<%=rdpTimeOfDayTo.ClientID %>");
    var today = moment();
    if (lastWeekDate.get_checked()) {
        fromDate.clear();
        toDate.clear();
        var lastWeekPeriod = moment().subtract(7, 'd').format("YYYY/MM/dd");
        fromDate.set_selectedDate(lastWeekPeriod);
        toDate.set_selectedDate(today);
    }
}

如果您可以将本地时刻设置为使用 YYYY/MM/DD 作为默认日期显示的区域设置,您只需调用 format('L')L 是 Moment 中本地默认日期显示的快捷方式。