如何解决JavaScript 过期时间
我需要一个将 24 小时添加到 unix 时间戳的函数。然后我需要检查随着时间的推移从时间戳的创建到第 24 小时之间还剩下多少时间。这将用作“到期”功能。我尝试使用 moment.js,但不确定这是否有效。有什么想法吗?
解决方法
const createExpiryUnix = (hours = 24) => (new Date(Date.now() + 1000 * 60 * 60 * hours)).getTime();
// returns timespan
const checkExpired = (unix) => unix < Date.now();
// returns true if expired
您可以使用这些简单的函数来创建和检查到期时间跨度。
,尝试 Luxon 而不是 Moment。它由相同的开发人员创建,而 Luxon 是 Moment(停产)的继承者。
const { DateTime } = luxon;
const addDays = (unixTimestamp,days = 1) =>
DateTime.fromSeconds(unixTimestamp).plus({ days });
const checkExpiration = (unixTimestamp,expiration) =>
((current,now) =>
(expiration !== undefined ? current > expiration : current < now)
? 'Expired'
: `${
(expiration !== undefined
? (expiration).diff(current,'hours')
: (current).diff(now,'hours')
).as('hours').toFixed(0)
} hours remaining`)
(DateTime.fromSeconds(unixTimestamp),DateTime.local());
let now = DateTime.local();
let expiration = addDays(now.toSeconds());
console.log(`Time remaining: ${checkExpiration(now.toSeconds(),expiration)}`);
console.log(`Time remaining: ${checkExpiration(1620772138)}`); // From comment
futureDate = addDays(DateTime.local().toSeconds(),2);
console.log(`Time remaining: ${checkExpiration(futureDate.toSeconds())}`);
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/1.26.0/luxon.min.js"></script>
我最终使用了 Moment.js,它很简单而且对我有用。
var exp = moment(new Date(expirationTimestamp)).from(new Date(now));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。