JS有关时间、时间戳的总结

各位小伙伴 灵活取用 按需修改~
如有bug,欢迎大佬指正! [ 抱拳 ]

1. 方法和一些方法的调用

getCurrentDate() {
	let date = new Date() //直接new Date()得到的时间格式 Thu Dec 09 2021 09:05:45 GMT+0800 (中国标准时间)
	let dateTime = date.getTime() //当前时间的时间戳 1639011993780
	let dateDay = date.getDay() // 今天是本周的第几天  4
	let dateMonth = date.getMonth() //当月是本年的第几个月-1  11
	let dateYear = date.getFullYear() // 当前年份 2021
	let dateDate = date.getDate() //当前日期 9
	let dateH = date.getHours() //当前小时 9
	let dateM = date.getMinutes() // 当前分钟
	let dateS = date.getSeconds() // 当前秒
	let format = this.formatTime(dateTime) //2021-12-09
	let formarS = this.formatTimeSS(dateTime) //2021-12-09 09:32:47

	let DateString = '2021-12-09'
	
	// 根据日期字符串 得到日期格式
	let DateStringToDate = this.stringToDate(DateString) //Thu Dec 09 2021 00:00:00 GMT+0800 (中国标准时间)
	
	//转换为时间格式后得到时间戳 
	let DateStringToDateTime = this.stringToDate(DateString).getTime() //(也是某一天凌晨时间戳)1638979200000

	//根据某天开始时间戳得到最后一秒时间戳
	let DateEnd = DateStringToDateTime + 24 * 3600 * 1000 - 1 
	
	//根据当前日期 当月第一天凌晨 当月最后一秒时间戳
	let getStartEndMonthDay = this.getStartEndMonth(date)
	// monthEndDate: Fri Dec 31 2021 00:00:00 GMT+0800 (中国标准时间) {}
	// monthEndDateTime: 1640966399999
	// monthStartDate: Wed Dec 01 2021 00:00:00 GMT+0800 (中国标准时间) {}
	// monthStartDateTime: 1638288000000
	
	// 根据当前日期 获取本周 开始 结束日期时间  周日到周六 凌晨到最后一秒 参数date是日期 如‘2021-12-09’
	let getStartAndEndDateOfWeek = this.getStartAndEndDateOfWeek(DateStringToDate)
	// endDate: Sat Dec 11 2021 23:59:59 GMT+0800 (中国标准时间) {}
	// startDate: Sun Dec 05 2021 00:00:00 GMT+0800 (中国标准时间) {}
},

2. 一些关于时间的处理工具(调用方法 传参 在上面)

  • 时间格式化 时间戳 时间转换为YYYY-MM-DD
formatTime(val) {
	if (val) {
		let date = new Date(val);
		let Y = date.getFullYear();
		let M = date.getMonth() + 1;
		let D = date.getDate();
		if (M < 10) {
			M = '0' + M;
		}
		if (D < 10) {
			D = '0' + D;
		}
		return Y + '-' + M + '-' + D;
	} else {
		return '';
	}
},
  • 转换为YYYY-MM-DD HH:MM:SS
formatTimeSS(val) {
	if (val) {
		let date = new Date(val);
		let Y = date.getFullYear();
		let M = date.getMonth() + 1;
		let D = date.getDate();
		let HH = date.getHours();
		let MM = date.getMinutes();
		let SS = date.getSeconds(); 
		if (M < 10) {
			M = '0' + M;
		}
		if (D < 10) {
			D = '0' + D;
		}
		if (HH < 10) {
			HH = '0' + HH;
		}
		if (MM < 10) {
			MM = '0' + MM;
		}
		if (SS < 10) {
			SS = '0' + SS;
		} 
		return Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS
	} else {
		return '';
	}
},
  • 时间字符串 转化为 日期格式
	stringToDate(string) {
		if (string) {
			var arr1 = string.split(" ");
			var sdate = arr1[0].split('-');
			var date = new Date(sdate[0], sdate[1] - 1, sdate[2]);
			return date;
		}
	},
  • 获取某年某月有多少天 返回天数
getCurrentMonthDays(month, year) {
		let monthArr = [1, 3, 5, 7, 8, 10, 12];
		let days = 0;
		if (month == 2) {
			if (year % 4 == 0) {
				days = 29;
			} else {
				days = 28;
			}
		} else if (monthArr.indexOf(month) >= 0) {
			days = 31;
		} else {
			days = 30;
		}
		return days;
	},
  • 根据日期获取该月第一天开始 最后一天结束的时间戳
getStartEndMonth(date) {
		let M = date.getMonth() + 1,
			Y = date.getFullYear(),
			D = date.getDate();
		let days = this.getCurrentMonthDays(M, Y);
		let monthStartDate = new Date(Y, M - 1, 1);
		let monthEndDate = new Date(Y, M - 1, days);
		let monthStartDateTime = monthStartDate.getTime()
		let monthEndDateTime = monthEndDate.getTime() + 86400000 - 1 //当月最后一天最后一秒时间戳
		const data ={
			monthStartDate,
			monthEndDate,
			monthStartDateTime,
			monthEndDateTime
		}
		return data
	},
  • 根据当前日期 获取本周 开始 结束日期时间 时间戳
getStartAndEndDateOfWeek(date) {
	let millisecondsOfDay = 24 * 60 * 60 * 1000
	let dayOfWeek = date.getDay()
	let startDate = new Date(date.getTime() - (dayOfWeek) * millisecondsOfDay)
	let endDate = new Date(date.getTime() + (7 - dayOfWeek) * millisecondsOfDay-1)
	return {
		startDate,
		endDate
	} 
},
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScript 提供了一些内置的函数和对象可以方便地实现时间时间戳的相互转换。 要将时间戳转换为时间,可以使用 JavaScript 的 Date 对象。例如: ``` // 将时间戳转换为时间 var timestamp = 1615574400; var date = new Date(timestamp * 1000); // 使用 Date 对象的方法格式化时间 console.log(date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate()); // 2021-3-31 ``` 要将时间转换为时间戳,可以使用 Date 对象的 `getTime()` 方法。例如: ``` // 将时间转换为时间戳 var date = new Date("2022-12-17T00:00:00"); var timestamp = Math.floor(date.getTime() / 1000); console.log(timestamp); // 1675446400 ``` 注意,JavaScript时间戳是以毫秒为单位的,如果要将其转换为以秒为单位的时间戳,需要使用数学函数 `Math.floor()` 对时间戳进行取整。 另外,还可以使用 JavaScript 的 `toISOString()` 方法将时间转换为 ISO 格式的字符串,再使用正则表达式截取其中的时间戳。例如: ``` // 将时间转换为 ISO 格式的字符串 var date = new Date("2022-12-17T00:00:00"); var isoString = date.toISOString(); // 使用正则表达式截取时间戳 var timestamp = isoString.match(/\d{10}/g)[0]; console.log(timestamp); // 1675446400 ``` 希望这些信息能帮到你! ### 回答2: JavaScript中可以使用Date对象进行时间时间戳之间的转换。 1. 将时间转换为时间戳: 要将一个特定的时间转换为时间戳,可以使用Date对象的getTime()方法。该方法返回的是一个自1970年1月1日以来经过的毫秒数。例如,可以使用下面的代码将当前时间转换为时间戳: ``` var timestamp = new Date().getTime(); ``` 2. 将时间戳转换为时间: 要将一个时间戳转换为时间,可以使用Date对象的构造函数,将时间戳作为参数传入。然后,可以使用该对象的各种方法(例如getFullYear()、getMonth()、getDate()等)来获取年、月、日、时、分、秒等信息。例如,可以使用下面的代码将一个时间戳转换为时间: ``` var timestamp = 1609459200000; // 2021年1月1日的时间戳 var date = new Date(timestamp); console.log(date); ``` 以上代码将打印出:Fri Jan 01 2021 08:00:00 GMT+0800 (中国标准时间) 需要注意的是,JavaScript中的时间戳是以毫秒为单位的,而不是以秒为单位的。所以在进行时间戳的转换时,需要确保使用正确的单位。 总结起来,通过Date对象的getTime()方法可以将时间转换为时间戳,通过Date对象的构造函数可以将时间戳转换为时间。 ### 回答3: JavaScript时间时间戳之间的相互转换非常简单。时间戳是指从1970年1月1日00:00:00格林威治标准时间(UTC)开始经过的毫秒数。而JavaScript的Date对象表示一个特定的日期和时间。 要将时间戳转换为JavaScript的Date对象,可以使用Date的构造函数。例如,将时间戳1234567890转换为Date对象的代码如下: ```javascript var timestamp = 1234567890; var date = new Date(timestamp); ``` 这样就可以得到表示时间戳对应日期和时间的Date对象。 相反,要将JavaScript的Date对象转换为时间戳,可以使用Date对象的getTime()方法。该方法返回自1970年1月1日00:00:00 UTC到指定日期和时间之间经过的毫秒数。例如,将Date对象转换为时间戳的代码如下: ```javascript var date = new Date(); var timestamp = date.getTime(); ``` 这样就可以得到表示指定Date对象对应的时间戳。 总之,要在JavaScript中进行时间时间戳之间的转换,可以使用Date对象的构造函数将时间戳转换为Date对象,或者使用Date对象的getTime()方法将Date对象转换为时间戳。这两种方法对于时间时间戳之间的转换非常方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值