// 时间戳转换方法
/**
* @params timestamp, 传入需要 转换的时间戳,
* @params format, 默认为 "ymd", 代表 年月日, 'ymdhms' 代表 年月日时分秒, 'ymdhm' 代表 年月日时分, 'hm' 代表 时分 String
* @content 如果只传递 timestamp 默认返回 年月日,
* @return dateime
* */
function padZero (num) {
if (num < 10) {
return `0${num}`
} else {
return num
}
}
// 日期以及时间格式常量定义
const CONSTVARIABLE = {
YMDHMS: "yyyy-mm-dd hh:mm:ss", // 年月日时分秒
YMDHM: "yyyy-mm-dd hh:mm", // 年月日时分
YMD: "yyyy-mm-dd", // 年月日
HMS: "hh:mm:ss", // 时分秒
HM: "hh:mm", // 时分
H: "hh" // 时
}
const dateModeTransform = {
dateModeTransform (timestamp, format = CONSTVARIABLE.YMD) {
let datetime = new Date(timestamp)
let year = datetime.getFullYear()
let month = padZero(datetime.getMonth() + 1)
let date = padZero(datetime.getDate())
let hours = padZero(datetime.getHours())
let minutes = padZero(datetime.getMinutes())
let seconds = padZero(datetime.getSeconds())
switch (format) {
case CONSTVARIABLE.YMDHMS:
// 年月日时分秒
return `${year}-${month}-${date} ${hours}:${minutes}:${seconds}`
case CONSTVARIABLE.YMDHM:
// 年月日时分
return `${year}-${month}-${date} ${hours}:${minutes}`
case CONSTVARIABLE.YMD:
// 年月日
return `${year}-${month}-${date}`
case CONSTVARIABLE.HMS:
// 时分秒
return `${hours}:${minutes}:${seconds}`
case CONSTVARIABLE.HM:
// 时分
return `${hours}:${minutes}`
case CONSTVARIABLE.H:
// 时
return `${hours}`
default:
// 默认返回 年月日
return `${year}-${month}-${date}`
}
},
/* 获取时间段内的日期
* begin: 开始时间
* end:结束时间
* weekNum:星期几 {number}[0,1,2,3,4,5,6]
*/
getWeek(begin, end, weeks){
var dateArr = new Array();
var stimeArr = begin.split("-");//=>["2018", "01", "01"]
var etimeArr = end.split("-");//=>["2018", "01", "30"]
var stoday = new Date();
stoday.setUTCFullYear(stimeArr[0], stimeArr[1] - 1, stimeArr[2]);
var etoday = new Date();
etoday.setUTCFullYear(etimeArr[0], etimeArr[1] - 1, etimeArr[2]);
var unixDb = stoday.getTime();//开始时间的毫秒数
var unixDe = etoday.getTime();//结束时间的毫秒数
for (var k = unixDb; k <= unixDe;) {
let needJudgeDate = dateModeTransform.msToDate(parseInt(k)).withoutTime;
//不加这个if判断直接push的话就是已知时间段内的所有日期
for(var i = 0; i < weeks.length; i++) {
if (new Date(needJudgeDate).getDay() === weeks[i]) {
dateArr.push(needJudgeDate);
}
}
k = k + 24 * 60 * 60 * 1000;
}
let newsArr = dateModeTransform.group(dateArr, weeks.length)
return newsArr;
},
// 获取周期内所有日期
getTimerList(begin, end) {
var dateArr = new Array();
var stimeArr = begin.split("-");//=>["2018", "01", "01"]
var etimeArr = end.split("-");//=>["2018", "01", "30"]
let weeks = [0,1,2,3,4,5,6]
var stoday = new Date();
stoday.setUTCFullYear(stimeArr[0], stimeArr[1] - 1, stimeArr[2]);
var etoday = new Date();
etoday.setUTCFullYear(etimeArr[0], etimeArr[1] - 1, etimeArr[2]);
var unixDb = stoday.getTime();//开始时间的毫秒数
var unixDe = etoday.getTime();//结束时间的毫秒数
for (var k = unixDb; k <= unixDe;) {
let needJudgeDate = dateModeTransform.msToDate(parseInt(k)).withoutTime;
//不加这个if判断直接push的话就是已知时间段内的所有日期
for(var i = 0; i < weeks.length; i++) {
if (new Date(needJudgeDate).getDay() === weeks[i]) {
dateArr.push(needJudgeDate);
}
}
k = k + 24 * 60 * 60 * 1000;
}
return dateArr;
},
// 获取完整周期内数据
wholeDate(begin, end, weeks) {
let newsArr = dateModeTransform.getWeek(begin, end, weeks)
// 添加这行为只返回完整的一个活动周期内的数据,进行中的活动不返回日期
if (newsArr.length != 0) {
for (let index = 0; index < newsArr.length; index++) {
if (newsArr[index].length < weeks.length) {
newsArr.splice(index, 1)
}
}
}
return newsArr
},
//根据毫秒数获取日期
msToDate (msec) {
let datetime = new Date(msec);
let year = datetime.getFullYear();
let month = datetime.getMonth();
let date = datetime.getDate();
let hour = datetime.getHours();
let minute = datetime.getMinutes();
let second = datetime.getSeconds();
let result1 = year +
'-' +
((month + 1) >= 10 ? (month + 1) : '0' + (month + 1)) +
'-' +
((date + 1) < 10 ? '0' + date : date) +
' ' +
((hour + 1) < 10 ? '0' + hour : hour) +
':' +
((minute + 1) < 10 ? '0' + minute : minute) +
':' +
((second + 1) < 10 ? '0' + second : second)
let result2 = year +
'-' +
((month + 1) >= 10 ? (month + 1) : '0' + (month + 1)) +
'-' +
((date + 1) < 11 ? '0' + date : date)
let result = {
hasTime: result1,
withoutTime: result2
};
return result
},
// 对数组进行分组
group(array, subGroupLength) {
let index = 0;
let newArray = [];
while(index < array.length) {
newArray.push(array.slice(index, index += subGroupLength));
}
return newArray;
}
}
export default dateModeTransform
获取周期内的指定时间 data.js
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- Math.ceil((new Date("2020/1/2") -new Date(new Date().getF...
- 因为date函数非常强大,他完全可以胜任一切这样的工作,我附个手册里的表吧a - "am" 或是 "pm"A - ...