// 根据时间戳转化时间函数 并且显示距离当前的时间段(刚刚、几分钟、几小时、几天、几周、几月、几年)
/**
*
* @param {默认传递2018083106:09的时间戳} timeStamp
* @param {默认格式为毫秒,参数为ms为毫秒,s为秒} formit
*/
function formatTimeStamp(timeStamp=1535710147654,formit='ms') {
if(formit==='ms'){
let nowTimeStamp = new Date().getTime()
let mDvelue = nowTimeStamp-timeStamp
// 10min 毫秒数
let tms = 60*10*1000
if(timeStamp>nowTimeStamp){return '当前时间传递有误,请检查!!!'}
// 刚刚 (10min之内为刚刚)
if(mDvelue<tms || mDvelue===tms){ return '刚刚' }
// 几分钟 (10-60min为几分钟)
if(tms< mDvelue && mDvelue <6*tms || mDvelue === 6*tms){return `${Math.ceil((mDvelue)/tms*.1)}分钟前`}
// 几小时 (1-24h为几小时)
if(6*tms<mDvelue && mDvelue <6*tms*24 || mDvelue === 6*tms*24){return `${Math.ceil((mDvelue)/(6*tms))}小时前`}
// (小于7d几天前)
if(6*tms*24<mDvelue && mDvelue <6*tms*24*7 || mDvelue === 6*tms*24*7){return `${Math.ceil((mDvelue)/(6*tms*24))}天前`}
// (大于7d为几周前)
if(6*tms*24*7<mDvelue && mDvelue<6*tms*24*35 || mDvelue === 6*tms*24*35){return `${Math.ceil((mDvelue)/(6*tms*24*7))}周前`}
// (大于四周为几月前)
if(6*tms*24*7*5<mDvelue && mDvelue <6*tms*24*7*5*11 || mDvelue === 6*tms*24*7*5*11){return `${Math.ceil((mDvelue)/(6*tms*24*30))}月前`}
// 几年 (其余显示几年前)
if(6*tms*24*7*5*11<mDvelue){return `${Math.ceil((mDvelue)/(6*tms*24*365))}年前`}
}else if(formit==='s'){
let nowTimeStamp = new Date().getTime()
let dValue = nowTimeStamp-timeStamp*1000
// 10min 毫秒数
let tms = 10*60*1000
if(timeStamp*1000>nowTimeStamp){return '当前时间传递有误,请检查!!!'}
// 刚刚 (10min之内为刚刚)
if(dValue<tms || dValue === tms){ return '刚刚' }
// 几分钟 (10-60min为几分钟)
if(tms< dValue && dValue <6*tms || dValue === 6*tms){return `${Math.ceil((dValue)/tms*.1)}分钟前`}
// 几小时 (1-24h为几小时)
if(6*tms<dValue && dValue <6*tms*24 || dValue === 6*tms*24){return `${Math.ceil((dValue)/(6*tms))}小时前`}
// (小于7d几天前)
if(6*tms*24<dValue && ndValue <6*tms*24*7 || ndValue === 6*tms*24*7){return `${Math.ceil((dValue)/(6*tms*24))}天前`}
// (大于7d为几周前)
if(6*tms*24*7<dValue && dValue<6*tms*24*35 || dValue === 6*tms*24*35){return `${Math.ceil((dValue)/(6*tms*24*7))}周前`}
// (大于四周为几月前)
if(6*tms*24*7*5<dValue && dValue <6*tms*24*7*5*11 || dValue === 6*tms*24*7*5*11){return `${Math.ceil((dValue)/(6*tms*24*30))}月前`}
// 几年 (其余显示几年前)
if(6*tms*24*7*5*11<dValue){return `${Math.ceil((dValue)/(6*tms*24*365))}年前`}
}else{
return '请传递ms(毫秒数)或者s(秒数)字段'
}
}
/**
* @param 日历现实格式 判断当前月份多少天 以及第一天星期几 用于签到日历样式
* @param 返回的数据格式
* @param title 日期标题
* @param date 当前月份第一天为周几
* @param days 当前月份的天数
*/
function SignDate() {
let nowDate = new Date()
let y = nowDate.getFullYear()
let mon = nowDate.getMonth()+1
let d = nowDate.getDate()
//顶部标题样式 (自定义标题文字)
let title = y+'年'+mon+'月'+d+'日'
//获取当前月份第一天为周几
nowDate.setYear(y);
nowDate.setMonth(mon - 1);
nowDate.setDate(1);
let weeks = [0,1,2,3,4,5,6];
let date = weeks[nowDate.getDay()];
//获取当前月份天数
let days=undefined
if(mon===4||mon===6||mon===9||mon===11){
days = 30
}else if(mon === 2){
//世纪年必须要被400整除才为闰年,非世纪年被4整除即可 闰年为29天,平年为28天
if(y%100===0){
//世纪年
if(y%400==0){
days = 29
}else{
days = 28
}
}else{
//非世纪年
if(y%4===0){
days = 29
}else{
days = 28
}
}
}else{
days = 31
}
//参数说明【日期标题-当前月份第一天为周几-当前月份的天数】
return [title,date,days]
}
export {
formatTimeStamp,
SignDate
}