js获取连续签到的日期天数,以当前时间为基准,当天或者前一天有签到,算是连续签到
时间: 2024-05-15 14:13:55 浏览: 145
可以通过以下步骤获取连续签到的日期天数:
1. 获取当前时间的年、月、日信息。
2. 获取上一天的日期信息。
3. 判断当前日期和上一天是否有签到记录,如果有,则将计数器加1。
4. 重复步骤3,直到找到一个没有签到记录的日期为止。
5. 返回计数器的值,即连续签到的天数。
下面是一个示例代码实现:
```javascript
// 假设已经存在一个 signLogs 数组,记录了每天的签到情况,格式为 { date: 'yyyy-mm-dd', signed: true/false }
function getContinuousSignInDays() {
let today = new Date();
let yesterday = new Date(today);
yesterday.setDate(yesterday.getDate() - 1);
let todayStr = formatDate(today);
let yesterdayStr = formatDate(yesterday);
let count = 0;
let idx = signLogs.findIndex(log => log.date === todayStr || log.date === yesterdayStr);
while (idx >= 0 && signLogs[idx].signed) {
count++;
idx--;
}
return count;
}
function formatDate(date) {
let year = date.getFullYear();
let month = padZero(date.getMonth() + 1, 2);
let day = padZero(date.getDate(), 2);
return `${year}-${month}-${day}`;
}
function padZero(num, len) {
return ('0'.repeat(len) + num).slice(-len);
}
```
其中,`signLogs` 数组中的每个元素包含了当天的日期信息和签到情况。`formatDate` 函数用于将 Date 对象格式化为 yyyy-mm-dd 格式的字符串,`padZero` 函数用于在数字前面补0,确保输出的字符串长度为2。`getContinuousSignInDays` 函数则是主要的计算逻辑,通过遍历 `signLogs` 数组,从当前日期和前一天开始,找到第一个没有签到记录的日期为止,返回连续签到的天数。
阅读全文