【问题标题】:Get the last week date in Javascript获取 Javascript 中的上周日期
【发布时间】:2015-03-10 00:42:08
【问题描述】:

这是我的问题:

我有 2 个 RadDatePicker,见下文:

      <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”)设置返回日期?我问的原因是因为在我回发并试图获得它所显示的控件之后: 2015 年 3 月 9 日上午 12:00:00,我只需要日期。

这是我的 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);
    }
}

【问题讨论】:

    标签: javascript vb.net date momentjs


    【解决方案1】:

    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 中区域设置默认日期显示的快捷方式。

    【讨论】:

    • 感谢您的回复,我将库添加到我的项目中,但由于某种原因,我无法在减去 7 天后设置所选日期。有什么建议吗?
    • 这行得通吗:toDate.set_selectedDate(today);?你有任何控制台错误吗?
    • 这是我更改后的代码: var lastWeekPeriod = moment().subtract(7, 'd').format('l'); fromDate.set_selectedDate(lastWeekPeriod);这是我的控制:
    • 请用新代码而不是评论更新您的问题,以便您可以格式化它。你有任何控制台错误吗?
    • 它不会崩溃或将我使用 moment.js 的代码行标记为红色,但这就像跨过它并到达那行代码:}}}finally{d._mouseUp( C);然后 d._restoreFlags();然后 setTimeout(function(){Page_BlockSubmit=false;
    【解决方案2】:

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


    怎么样:


    解决方案 1,使用 vanilla 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 之类的库。这将真正简化任务。例如,减去 7 天并使用 momentjs 将日期格式化为 YYYY/MM/DD 看起来像这样:

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


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2015-05-12
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      相关资源
      最近更新 更多