说明
实际上使用时,一般不用自己手写,而是用dayjs。通过引入dayjs这个第三方插件来操作时间。
但有时候,不想引入过多的第三方插件,那么就要使用JavaScript原生代码来书写。
原理:
- new Date()构造函数可以直接用年月日时分秒毫来构建一个本地的时间对象。
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]])
/* //new Date(年, 月[, 日[, 时[, 分[, 秒[, 毫]]]]])
year 代表年份的整数值。一个区间段[0(0年),9999(9999年)]或[0(1900年),99(1999年)]。//为了避免千年虫问题最好指定4位数的年份。
month 代表月份的整数值,一个区间段[0(1月),11(12月)]。
day 代表一个月中的第几天的整数值,一个区间段[1(1号),28(28号)]或[1(1号),29(29号)]或[1(1号),30(30号)]或[1(1号),31(31号)]。
hour 代表一天中的小时数的整数值,一个区间段[0(0点),23(23点)]。
minute 分钟数,一个区间段[0(0分),59(59分)]。
second 秒数,一个区间段[0(0秒),59(59秒)]。
millisecond 表示时间的毫秒部分的整数值,一个区间段[0(0毫),999(999毫)]。
*/
- [本地时间]与[标准时间]的分钟差为[new Date().getTimezoneOffset()]:
new Date("2021-09-16T00:00:00.000")//本地时间的[2021年09年16日00时00分00秒000毫秒];
new Date('2021-09-16T00:00:00.000Z')//标准时间的[2021年09年16日00时00分00秒000毫秒];
new Date("2021-09-16T00:00:00.000").getTime()-new Date('2021-09-16T00:00:00.000Z').getTime()===new Date().getTimezoneOffset()*1000*60
获取转化:
1.获取本地时间:
//new Date('2021-01-01T00:00:00.000Z').toJSON()//'2021-01-01T00:00:00.000Z'
//new Date('2021-01-01').toJSON()//'2021-01-01T00:00:00.000Z'
//
let 某一天 = new Date(2021,9,15)//在北京时区为'2021-10-14T16:00:00.000Z';
const 本地当年第一天0时0分0秒0毫秒 = new Date(new Date(某一天).getFullYear(),0,1)
const 本地当月第一天0时0分0秒0毫秒 = new Date(new Date(某一天).getFullYear(),new Date(某一天).getMonth()+0,0+1)
const 本地当月最后一天0时0分0秒0毫秒 = new Date(new Date(某一天).getFullYear(),new Date(某一天).getMonth()+1,0)
const 本地当月最后一天23时59分59秒999毫秒 = new Date(new Date(某一天).getFullYear(),new Date(某一天).getMonth()+1,0,23,59,59,999)
const 本地当年最后一天0时0分0秒0毫秒 = new Date(new Date(某一天).getFullYear(),11,31)
const 本地当年最后一天23时59分59秒999毫秒 = new Date(new Date(某一天).getFullYear(),11,31,23,59,59,999)