JavaScript 获取时间范围(当天,本月(30天间隔),momentJS基本使用)
文章目录
- 获取从今天0点到现在的时间范围
- 获取今天到前一个月的时间范围
- momentJS(第三方库)
- 安装
- 使用
- 日期格式化
- 相对时间
- 日历时间
- 多语言支持
获取从今天0点到现在的时间范围
这个比较简单,直接把同一天的时间数都换成0即可
const getNowDate = (isGetDate = false) => {
let now = new Date();
let y = now.getFullYear();
let m = now.getMonth() + 1;
let d = now.getDate();
let h = now.getHours();
let min = now.getMinutes();
let s = now.getSeconds();
m = m >= 10 ? m : '0' + m
d = d >= 10 ? d : '0' + d
h = h >= 10 ? h : '0' + h
min = min >= 10 ? min : '0' + min
s = s >= 10 ? s : '0' + s
if (isGetDate) {
return `${y}-${m}-${d} 00:00:00`;
} else {
return `${y}-${m}-${d} ${h}:${min}:${s}`;
}
};
console.log(getTodayDuration(true))
console.log(getTodayDuration())
获取今天到前一个月的时间范围
这里也简单的,直接用时间戳来转换就可以了啦
const getMonthDuration = (isToday = false) => {
let now = new Date();
let y = now.getFullYear();
let m = now.getMonth() + 1;
let d = now.getDate();
let h = now.getHours();
let min = now.getMinutes();
let s = now.getSeconds();
m = m >= 10 ? m : '0' + m
d = d >= 10 ? d : '0' + d
h = h >= 10 ? h : '0' + h
min = min >= 10 ? min : '0' + min
s = s >= 10 ? s : '0' + s
let today = `${y}-${m}-${d} ${h}:${min}:${s}`;
if (isToday) {
return today;
} else {
let stampTime = new Date(today).getTime() - (30 * 24 * 3600 * 1000)
let prveStamp = new Date(stampTime);
let prveMonth = prveStamp.getMonth() + 1;
let prveDate = prveStamp.getDate();
let year = prveStamp.getFullYear();
prveMonth = prveMonth >= 10 ? prveMonth : '0' + prveMonth
prveDate = prveDate >= 10 ? prveDate : '0' + prveDate
return `${year}-${prveMonth}-${prveDate} ${h}:${min}:${s}`
}
}
console.log(getMonthDuration(true));
console.log(getMonthDuration());
momentJS(第三方库)
以上两个方式是自己写的,如果需要也可以使用第三方库,项目中采用的也比较多
momentJS官方API地址:http://momentjs.cn/
安装
npm install moment --save # npm
yarn add moment # Yarn
使用
以下示例代码来自官方,可直接在官方地址查看
日期格式化
moment().format('MMMM Do YYYY, h:mm:ss a'); // 三月 29日 2023, 3:30:46 下午
moment().format('dddd'); // 星期三
moment().format("MMM Do YY"); // 3月 29日 23
moment().format('YYYY [escaped] YYYY'); // 2023 escaped 2023
moment().format();
相对时间
moment("20111031", "YYYYMMDD").fromNow(); // 11 年前
moment("20120620", "YYYYMMDD").fromNow(); // 11 年前
moment().startOf('day').fromNow(); // 16 小时前
moment().endOf('day').fromNow(); // 8 小时内
moment().startOf('hour').fromNow(); // 31 分钟前
日历时间
moment().subtract(10, 'days').calendar(); // 2023/03/19
moment().subtract(6, 'days').calendar(); // 上星期四15:30
moment().subtract(3, 'days').calendar(); // 上星期日15:30
moment().subtract(1, 'days').calendar(); // 昨天15:30
moment().calendar(); // 今天15:30
moment().add(1, 'days').calendar(); // 明天15:30
moment().add(3, 'days').calendar(); // 下星期六15:30
moment().add(10, 'days').calendar(); // 2023/04/08
多语言支持
moment.locale(); // zh-cn
moment().format('LT'); // 15:30
moment().format('LTS'); // 15:30:46
moment().format('L'); // 2023/03/29
moment().format('l'); // 2023/3/29
moment().format('LL'); // 2023年3月29日
moment().format('ll'); // 2023年3月29日
moment().format('LLL'); // 2023年3月29日下午3点30分
moment().format('lll'); // 2023年3月29日 15:30
moment().format('LLLL'); // 2023年3月29日星期三下午3点30分
moment().format('llll'); // 2023年3月29日星期三 15:30