我有以下switch语句函数,该函数从设置的时间日期返回API中的条目:

entries: {
        recent: function(callback) {
            return self.request(rest.get, '/timeentries', { startDate: '2016-02-15' }, function(result) {
                callback(result);
            });
        },


这工作正常,我从2016-02-15之后的任何事情都得到了结果。

但是,我不希望这是静态的。我希望能够从运行日期起提取日期范围。

我有以下代码返回当前星期:

var curr = new Date; // get current date
var first = curr.getDate() - curr.getDay();
var firstDay = new Date(curr.setDate(first)).toUTCString();


firstDay返回星期的开始,这是我要代替startDate的内容:“ 2016-02-15”。

问题,我如何将firstDay放在这里,以下内容将无法工作:

entries: {
        recent: function(callback) {
          var curr = new Date; // get current date
          var first = curr.getDate() - curr.getDay();
          var firstDay = new Date(curr.setDate(first)).toUTCString();
            return self.request(rest.get, '/timeentries', { firstDate }, function(result) {
                callback(result);
            });
        },

最佳答案

如果您仔细观察第一个调用并将其与第二个调用进行比较,则您的对象格式错误。它们必须是以key: value为键,而日期为值的startDate对,因此:

return self.request(rest.get, '/timeentries', { startDate: firstDate }, function(result) {
    callback(result);
});


在新的ES6规范中,{ firstDate }是有效的对象,它将把firstDate作为密钥,但是您需要startDate作为密钥。

另外,除了firstDate变量之外,没有任何其他变量firstDay,因此该对象将是{ startDate: firstDay }才能正常工作。

同样,toUTCString返回整个日期字符串,如下所示:Sun, 12 Feb 2017 02:01:35 GMT并且您只需要YYY-MM-DD格式,因此查看this answer时,您需要这样做:

var d = new Date(),
    month = '' + (d.getMonth() + 1),
    day = '' + d.getDate(),
    year = d.getFullYear();

if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;

var firstDay = [year, month, day].join('-');

08-07 11:45