我有以下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('-');