let crtTs = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
时间: 2024-01-03 16:02:45 浏览: 34
这段代码的作用是将之前获取到的 Date 对象中的年、月、日、小时、分钟、秒等时间信息取出,并将它们以一定的格式拼接成一个字符串。具体来说,它将年份、月份、日期、小时数、分钟数、秒数分别用 "-"、"-"、" "、":"、":" 连接起来,形成一个类似于 "2022-01-01 12:30:45" 的字符串。这个字符串通常用于显示或记录某个时间点的具体时间信息,例如在日志中记录某个事件的发生时间。
相关问题
var today = new Date(); var currentQuarter = Math.floor((today.getMonth() + 1) / 3); var previousQuarter = currentQuarter - 1; var lastMonth = new Date(today.getFullYear(), today.getMonth(), today.getDate()); var yearQuarter = lastMonth.getFullYear(); if (previousQuarter < 1) { previousQuarter = 4; yearQuarter = yearQuarter - 1; } previousQuarter = previousQuarter.toString().padStart(2, '0'); var quer = yearQuarter + ' - ' + previousQuarter; var quarter = quer.slice(-1); var yearMonth = quer.substring(0, 4); let startMonth = (quarter - 1) * 3 + 1; let endMonth = startMonth + 2; let startDate = new Date(yearQuarter, startMonth - 1, 1); let endDate = new Date(yearQuarter, endMonth - 1, 1); endDate.setMonth(endDate.getMonth() + 1); endDate.setDate(endDate.getDate() - 1); startMonth = (startDate.getMonth() + 1).toString().padStart(2, '0'); endMonth = (endDate.getMonth() + 1).toString().padStart(2, '0'); document.getElementById('qt_1').value = startDate.getFullYear() + "-" + startMonth + "/" + endDate.getFullYear() + "-" + endMonth;这段代码导致我点开选择日历时日历的年显示的是1899,该怎么办
这段代码中涉及到了日期对象的操作,导致年份显示错误。在这里,endDate.setDate(endDate.getDate() - 1)这行代码是导致问题的原因。因为在设置endDate日期之后,又对它进行了修改,导致endDate的年份被修改为了默认值1899。
要解决这个问题,我们需要在endDate.setDate(endDate.getDate() - 1)之前获取endDate的年份,然后在修改之后将年份重新设置回去。
以下是修改后的代码:
```
var today = new Date();
var currentQuarter = Math.floor((today.getMonth() + 1) / 3);
var previousQuarter = currentQuarter - 1;
var lastMonth = new Date(today.getFullYear(), today.getMonth(), today.getDate());
var yearQuarter = lastMonth.getFullYear();
if (previousQuarter < 1) {
previousQuarter = 4;
yearQuarter = yearQuarter - 1;
}
previousQuarter = previousQuarter.toString().padStart(2, '0');
var quer = yearQuarter + ' - ' + previousQuarter;
var quarter = quer.slice(-1);
var yearMonth = quer.substring(0, 4);
let startMonth = (quarter - 1) * 3 + 1;
let endMonth = startMonth + 2;
let startDate = new Date(yearQuarter, startMonth - 1, 1);
let endDate = new Date(yearQuarter, endMonth - 1, 1);
// 获取endDate的年份
let endYear = endDate.getFullYear();
endDate.setDate(endDate.getDate() - 1);
// 将endDate的年份设置回去
endDate.setFullYear(endYear);
startMonth = (startDate.getMonth() + 1).toString().padStart(2, '0');
endMonth = (endDate.getMonth() + 1).toString().padStart(2, '0');
document.getElementById('qt_1').value = startDate.getFullYear() + "-" + startMonth + "/" + endDate.getFullYear() + "-" + endMonth;
```
这样修改后,应该就可以正确显示年份了。
以下代码可以优化吗?如果可以请给出优化代码并注释const app = getApp(); function formatDate(date) { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; } Page({ data: { visits: wx.getStorageSync('visits'), dateString: "", current: 0, laifangzongrenshu: "", filteredDataArray: [], }, you: function () { var that = this; var current = that.data.current; if (current < that.data.visits.length - 1) { that.setData({ current: current + 1, }) } let dateString = that.data.dateString; let date = new Date(dateString); date.setDate(date.getDate() + 1); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); let nextDay = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day); this.setData({ dateString: nextDay, }); }, zuo: function () { var that = this; var current = that.data.current; if (current > 0) { that.setData({ current: current - 1, }) } let dateString = that.data.dateString; let date = new Date(dateString); date.setDate(date.getDate() - 1); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); let prevDay = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day); this.setData({ dateString: prevDay, }); },})
可以对代码进行如下优化:
```js
const app = getApp();
function formatDate(date) {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
}
Page({
data: {
visits: wx.getStorageSync('visits'),
dateString: formatDate(new Date()),
current: 0,
},
you() {
const current = this.data.current;
if (current < this.data.visits.length - 1) {
this.setData({
current: current + 1,
});
}
const dateString = this.data.dateString;
const nextDate = new Date(new Date(dateString).getTime() + 24 * 60 * 60 * 1000);
this.setData({
dateString: formatDate(nextDate),
});
},
zuo() {
const current = this.data.current;
if (current > 0) {
this.setData({
current: current - 1,
});
}
const dateString = this.data.dateString;
const prevDate = new Date(new Date(dateString).getTime() - 24 * 60 * 60 * 1000);
this.setData({
dateString: formatDate(prevDate),
});
},
});
```
优化思路:
1. 将日期格式化代码封装成一个函数`formatDate`,并使用`padStart`函数补全日期格式中的0。
2. 在`data`中的`dateString`字段中,直接存储格式化后的当天日期,而不是默认为空字符串。
3. 在点击左右按钮时,使用`const`代替`var`,并直接在`setData`中更新数据。
4. 在点击左右按钮时,使用`new Date(dateString)`获取日期对象,而不是使用`new Date()`再转换成日期对象。
5. 在点击左右按钮时,使用`getTime()`获取日期的时间戳,再加上或减去24小时的毫秒数,最后使用`new Date()`将时间戳转换成日期对象。
这样做的好处是,代码更加简洁易读,同时也提高了代码的可维护性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)