RN时间戳转化成时间

// 根据时间戳转化时间函数 并且显示距离当前的时间段(刚刚、几分钟、几小时、几天、几周、几月、几年)

/**

*

* @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

}

猜你喜欢

转载自blog.csdn.net/liulei21/article/details/82457468