我有一个创建的日期。我想运行一个if / switch语句,以了解当前的日期和时间是否比创建的日期早24小时以上。
如果创建的日期早于24小时,请执行一些操作,如果少于24小时,请执行其他操作。
let now = +new Date();
// This is returned as: July 18, 2018 at 3:48:00 AM UTC+1
let createdAt = +doc.data().created_at;
const oneDay = 60 * 60 * 24;
var compareDatesBoolean = (now - createdAt) > oneDay;
任何指导都将非常感谢! :)
答案 0 :(得分:9)
创建一个小时的示例,请参考此内容,然后将其更改为24小时
const OneHourAgo= (date) => {
const hour= 1000 * 60 * 60;
const hourago= Date.now() - hour;
return date > hourago;
}
简单的一个:-
var OneDay = new Date().getTime() + (1 * 24 * 60 * 60 * 1000)
day hour min sec msec
if (OneDay > yourDate) {
// The yourDate time is less than 1 days from now
}
else if (OneDay < yourDate) {
// The yourDate time is more than 1 days from now
}
答案 1 :(得分:0)
添加此 一天的常量= 60 * 60 * 24 * 1000(毫秒)。由于JS会将2个Datetime对象之间的差转换为毫秒。我认为应该可以
答案 2 :(得分:0)
也许是这样吗?
const now = Date.now();
// if it's a firebase timestamp
const createdAt = doc.data().created_at.toMillis();
const oneDay = 24 * 60 * 60 * 1000;
const isMoreThanADay = (now - createdAt) > oneDay;
我不知道firebase timestamps是依靠toMillis
方法的文档来实现的。
答案 3 :(得分:0)
在这种情况下,使用时间会容易得多,您可以尝试以下方法:
let hours = moment().diff(moment(yourDateString), 'hours');
let days = moment().diff(moment(yourDateString), 'days');
它将为您提供1,2,5,0等整数值,因此您可以轻松使用条件检查,如:
if(hours >= 24) { your code }
或
if(days >= 1) { your code }
另外,还有一件事是您可以获得时差的更准确结果(以小数形式表示,如1.2、1.5、0.7等),以得到这种结果,我们需要传递第3个参数,即对于精确结果而言为true使用此语法:
let hours = moment().diff(moment(yourDateString), 'hours', true);
让我知道您是否还有任何疑问
答案 4 :(得分:0)
如果您要检查数据库(以mysql格式或其他格式)中的任何日期不早于24小时(如果发生重置密码链接的情况),那么可以使用以下逻辑,在我的情况下,{{1} }是将值保存在数据库中
user.passwordTokenTimestamp