微信小程式中將時間戳轉換為聊天格式
該程式碼是對第三方庫內容進行轉換以方便使用wxs,也可以作為js使用:
https://www.npmjs.com/package/chat-date-format
使用方式:
呼叫:
chatDateFormat(timestamp, isDetail)
引數說明:
timestamp - 傳入時間戳
isDetail - 是否要顯示詳細時間
let chatDateFormat = require('chat-date-format')
methods: {
...chatDateFormat
}
created () {
this.chatDateFormat(new Date()) // 當前格式化時間 - 某天 xx:xx
this.chatDateFormat(new Date(), true) // 出當前格式化詳細時間 - 某天 上午 xx:xx
}
程式碼如下:
/**
* 格式化為IM所需顯示時間
* @param {Date} timestamp 處理型別
* @param {Boolean} isDetail 是否顯示詳細時間
*/
function chatDateFormat (timestamp, isDetail = true) {
var chatTime = { _date: timestamp || Date.now() }
chatTime.init = function () {
var time = getDate(chatTime._date).getTime()
var now = getDate();
chatTime._timeStamp = time
chatTime._now = now.getTime()
chatTime._nowYear = now.getFullYear()
chatTime._nowMonth = now.getMonth() + 1
chatTime._nowDay = now.getDate()
chatTime._nowHour = now.getHours()
chatTime._nowMinute = now.getMinutes()
chatTime._nowSecond = now.getSeconds()
chatTime._nowWeek = now.getDay()
chatTime._argYear = getDate(chatTime._date).getFullYear()
chatTime._argMonth = getDate(chatTime._date).getMonth() + 1
chatTime._argDay = getDate(chatTime._date).getDate()
chatTime._argHour = getDate(chatTime._date).getHours()
chatTime._argMinute = getDate(chatTime._date).getMinutes()
chatTime._argSecond = getDate(chatTime._date).getSeconds()
chatTime._argWeek = getDate(chatTime._date).getDay()
}
chatTime.week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
chatTime.formatNumber = function (n) {
n = n.toString()
return n[1] ? n : '0' + n
}
chatTime.timeFrame = function() {
var geo = [[0, 5], [6, 8], [9, 11], [12, 13], [14, 16], [17, 18], [19, 21], [22, 23]]
var frame = ['凌晨', '早上', '上午', '中午', '下午', '傍晚', '晚上', '深夜']
return frame[geo.indexOf(geo.filter(function(v) {
return v[0] <= chatTime._argHour && v[1] >= chatTime._argHour
})[0])]
}
chatTime.formatDate = function(formatString, isTimeFrame = false){
function format (e) { return e < 10 ? ('0' + e) : e }
var _date = getDate(timestamp)
var time = { timestamp:timestamp }
time.YYYY = _date.getFullYear()
time.MM = format(_date.getMonth() + 1)
time.DD = format(_date.getDate())
time.hh = format(_date.getHours())
time.mm = format(_date.getMinutes())
time.ss = format(_date.getSeconds())
var res = ''
formatString.trim().split(' ').forEach(function(value, index){
if (!value) return
var l = value.split('-')
var c = value.split(':')
if (index) res += ' '
if (index && isTimeFrame) res += chatTime.timeFrame().toString()
if (l.length === 1) {
c.forEach(function(val, idx){
if (idx) res += ':'
res += time[val]
})
if (!index && isTimeFrame) res = chatTime.timeFrame().toString() + res
} else {
l.forEach(function(val, idx){
if (idx) res += '-'
res += time[val]
})
}
})
return res
}
chatTime.init()
if (chatTime._nowYear === chatTime._argYear) {
if (chatTime._nowMonth === chatTime._argMonth) { // 一個月內
var dayDiff = chatTime._nowDay - chatTime._argDay
if (dayDiff > 7) {
return isDetail ? chatTime.formatDate('MM-DD hh:mm', true) : chatTime.formatDate('MM-DD')
} else if (dayDiff === 1) {
return isDetail ? '昨天'+chatTime.formatDate('hh:mm', true) : '昨天' + chatTime.formatDate('hh:mm')
} else if (dayDiff === 2) {
return isDetail ? '前天' + chatTime.formatDate('hh:mm', true) : '前天' + chatTime.formatDate('hh:mm')
} else if ([3, 4, 5, 6, 7].indexOf(dayDiff)) {
return isDetail ? chatTime.week[chatTime._argWeek] + chatTime.formatDate('hh:mm') : chatTime.week[chatTime._argWeek]
} else if (dayDiff <= 0) {
return chatTime.formatDate('hh:mm', true)
}
} else if (chatTime._nowMonth > chatTime._argMonth) {
return isDetail ? chatTime.formatDate('MM-DD hh:mm', true) : chatTime.formatDate('MM-DD')
} else {
return isDetail ? chatTime.formatDate('MM-DD hh:mm', true) : chatTime.formatDate('MM-DD')
}
} else {
return chatTime.formatDate('YYYY-MM-DD')
}
}
module.exports = {
chatDateFormat : chatDateFormat
}
相關文章
- JavaScript將時間戳轉換為年月日格式JavaScript時間戳
- 將時間戳轉換為時間例項程式碼時間戳
- javascript將時間物件轉換為時間戳JavaScript物件時間戳
- 將時間戳轉換為時間日期程式碼例項時間戳
- 時間戳轉化為時間格式時間戳
- MySQL 時間戳的 獲取 & 轉換為特定時間格式MySql時間戳
- 時間戳格式化轉換時間戳
- javascript時間戳和時間格式的相互轉換JavaScript時間戳
- php將時間戳轉換為多少分鐘前PHP時間戳
- 把時間戳之差轉換成時分秒格式時間戳
- SqlServer時間戳與普通格式的轉換SQLServer時間戳
- mysql將時間戳轉成常用可讀時間格式MySql時間戳
- oracle 中將unix/linux時間戳進行轉換(轉)OracleLinux時間戳
- js時間戳與日期格式的相互轉換JS時間戳
- 如何將Python時間戳轉換為時間?Python學習教程!Python時間戳
- Java中將時間戳轉化為Date型別Java時間戳型別
- Python3時間戳轉換為指定格式的日期Python時間戳
- 時間轉換成時間戳時間戳
- C 時間轉換時間戳時間戳
- 用js將從後臺得到的時間戳(毫秒數)轉換為想要的日期格式JS時間戳
- UTC格式時間轉換為當地時間程式碼
- PHP日期格式轉時間戳PHP時間戳
- sqlite、mysql 將時間戳轉換成本地時間語句SQLiteMySql時間戳
- JavaScript 時間戳轉換為年月日JavaScript時間戳
- C 時間戳轉換成時間時間戳
- Perl中本地時間和UNIX時間戳間相互轉換時間戳
- Excel中時間戳轉換時間Excel時間戳
- JavaScript 時間轉換為UTC格式JavaScript
- MySQL時間戳轉成日期格式MySql時間戳
- java時間戳和PHP時間戳的轉換phptime()Java時間戳PHP
- 如何將UTC時間轉換為Unix時間戳(How to convert UTC time to unix timestamp)時間戳
- Taro:將已有微信小程式轉換為多端應用微信小程式
- 時間日期和時間戳相互轉換程式碼例項時間戳
- MYSQL中UNIX時間戳與日期的轉換MySql時間戳
- js把時間戳轉換成時間格式yyyy-MM-dd HH:mm:ssJS時間戳
- 直播平臺原始碼,js 時間戳轉為日期格式原始碼JS時間戳
- Timestamp-時間戳轉換時間戳
- 轉換時間戳的函式時間戳函式