我正在使用应用脚本。我有一系列具有date_time属性的对象,该属性是时间戳。我想选择2天前只有时间戳的所有对象(我不想要1天前或3天前)。
举个例子假设今天是2009年3月19日。 2天前是3/17/2019。我想要包括3/17/2019的所有时间戳
我正在读https://www.digitalocean.com/community/tutorials/understanding-date-and-time-in-javascript。
假设我有:
objs = [{'name':'tom','timestamp':'3/18/2019 11:42:23'},
{'name':'bob','timestamp':'3/19/2019 11:42:23'}, {'name':'dave','timestamp':'3/20/2019 11:42:23'}
]
我可以从2天前获得日期:
var d = new Date();
var 2daysago = d.setDate(d.getDate() - daysAgo);
然后我可以过滤:
var filtered = objs .filter(function (obj) {
return X
});
比较2daysago每个对象时间戳的最佳方法是什么?使用日期对象或使用某种字符串方法会更好吗?
3/17/2019 10:11:47
,3/17/2019 10:11:49
的对象,当今天是3/19/2019
。如果我的理解是正确的,那么这个答案怎么样?在这个答案中,我为你的情况提出了两种模式。
在这种模式中,timestamp
用作字符串。当今天是3/19/2019
时,包括3/17/2019
在timestamp
的值将被检索为2天前的值。
var nDaysAgo = 2; // 2 days ago
var date = new Date();
date.setDate(date.getDate() - nDaysAgo);
// var checkDate = Utilities.formatDate(d, Session.getScriptTimeZone(), "M/dd/yyyy"); // If the day is 01,02,,, please use this.
var checkDate = Utilities.formatDate(date, Session.getScriptTimeZone(), "M/d/yyyy"); // If the day is 1,2,,, please use this.
var res = objs.filter(function(e) {return e.timestamp.indexOf(checkDate) > -1});
Logger.log(res)
在此模式中,timestamp
用作日期对象。当今天是3/19/2019
时,从3/17/2019 00:00:00
到3/18/2019 00:00:00
的值将在2天前检索到。
var nDaysAgo = 2; // 2 days ago
var d1 = new Date();
d1.setHours(0, 0, 0, 0);
var d1c = d1.setDate(d1.getDate() - nDaysAgo + 1);
var d2 = new Date();
d2.setHours(0, 0, 0, 0);
var d2c = d2.setDate(d2.getDate() - nDaysAgo);
var res = objs.filter(function(e) {
var temp = new Date(e.timestamp).getTime();
return temp < d1c && temp > d2c;
});
Logger.log(res)
3/19/2019
,请使用new Date("3/19/2019 00:00:00")
而不是new Date()
。如果我误解了你的问题并且这不是你想要的结果,我道歉。
const day = 24 * 60 * 60 * 1000;
const oneDayAgo = Date.now() - day;
const twoDaysAgo = Date.now() - 2 * day;
const isTwoDaysOld = function(obj) {
const d = new Date(obj.timestamp);
return d > twoDaysAgo && d < oneDayAgo;
}
const filtered = objs.filter(isTwoDaysOld);
在JS qazxsw poi转换为ms进行数值运算,如qazxsw poi,Date
,+
,-
等。
然后我们需要做的就是找出2天前的时间点(毫秒)和1天前的时间点。然后检查相关日期是否在中间。
注意:这假设你的意思是“24小时”到“天”,而不是“日期的一天”