由于最近使用日期时间来请求接口比较频繁,所以在这里做个笔记
1.最先能想到的是使用new Date()创建日期对象
它返回的结果是英文的年月日以及时间和时区。
数据类型是一个对象所以可以使用接下来介绍的一些时间对象方法,所以不能对其使用空格切片来获取其中的数据
2. 其次就是对其进行传参来使我们想要的的时间变成上面的格式我用的不多就不一一列举了
new Date(2023,7,28),new Date(ms)
3. 接下来介绍时间对象的几个常用方法
- getDate()返回一个月中的某一天(1-31)注意单数不会自动补0
- getFullYear()从 Date 对象以四位数字返回年份。
- getMonth()从 Date 对象返回月份 (0 ~ 11)。特别注意使用的加一
- getTime()返回 1970 年 1 月 1 日至今的毫秒数。这个很有用毕竟毫秒数操作简单,可以用来轻易转化为各种时间格式,将毫秒数传入new Date()变成时间对象,再对其使用各种方法转换成想要的格式是前后端经常使用的方法
4. 最后再讲一下最近我频繁使用的时间格式“YYYY-MM-DD”以及处理方法
首先该格式是一个字符串有一些时间字符串加上-拼接而成。所以我们可以很容易的对其进行split切割以及对其加减运算。
接下来,假如我们拿到一个从1970年1月1日到现在的时间戳。我们该如何转换为“YYYY-MM-DD”格式呢?
转换为时间对象再使用方法得到
function getTime(dateStr){
var date = new Date(dateStr);
var Month = date.getMonth() + 1;
var Day = date.getDate();
var Y = date.getFullYear() ;
var M = Month < 10 ? '0' + Month : Month;
var D = Day + 1 < 10 ? '0' + Day : Day;
return Y + ‘-’ + M + ‘-’ + D;
}
如果用到倒计时的需求时就需要通过计算得到了
function getTime(dataStr) {
day = Math.floor(dataStr / (1000 * 60 * 60 * 24))
hours = Math.floor(
((dataStr - day * 1000 * 60 * 60 * 24) / (1000 * 60 * 60)) % 24
)
minutes = Math.floor(
((dataStr - day * 1000 * 60 * 60 * 24 - hours * 1000 * 60 * 60) /
(1000 * 60)) %
60
)
seconds = Math.floor(
((dataStr -
day * 1000 * 60 * 60 * 24 -
hours * 1000 * 60 * 60 -
minutes * 1000 * 60) /
1000) %
60
)
if (Math.floor(day) < 10) {
day = "0" + day
}
if (Math.floor(hours) < 10) {
hours = "0" + hours
}
if (Math.floor(minutes) < 10) {
minutes = "0" + minutes
}
if (Math.floor(seconds) < 10) {
seconds = "0" + seconds
}
return [day, hours, minutes, seconds]
}```