2021-09-06 时间转化-通过某一天获取相关联的日期

104 阅读3分钟

说明

实际上使用时,一般不用自己手写,而是用dayjs。通过引入dayjs这个第三方插件来操作时间。

但有时候,不想引入过多的第三方插件,那么就要使用JavaScript原生代码来书写。

原理:

  1. 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毫)]。
*/
  1. [本地时间]与[标准时间]的分钟差为[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 本地当年第一天0000毫秒 = new Date(new Date(某一天).getFullYear(),0,1)
const 本地当月第一天0000毫秒 = new Date(new Date(某一天).getFullYear(),new Date(某一天).getMonth()+0,0+1)
const 本地当月最后一天0000毫秒 = new Date(new Date(某一天).getFullYear(),new Date(某一天).getMonth()+1,0)
const 本地当月最后一天235959999毫秒 = new Date(new Date(某一天).getFullYear(),new Date(某一天).getMonth()+1,0,23,59,59,999)
const 本地当年最后一天0000毫秒 = new Date(new Date(某一天).getFullYear(),11,31)
const 本地当年最后一天235959999毫秒 = new Date(new Date(某一天).getFullYear(),11,31,23,59,59,999)

参考:

  1. js获取当月最后一天
  2. dayjs的官方中文文档