需要moment.js lodash.js
import moment from 'moment'
import _ from 'lodash'
function parseTimeInYmd (time) {
if (_.isNil(time)) {
return ''
}
return moment(time * 1000).format('YYYY-MM-DD')
}
function parseTimeInYmdHm (time) {
if (_.isNil(time)) {
return ''
}
return moment(time * 1000).format('YYYY-MM-DD HH:mm')
}
function parseTimeInYmdHms (time) {
if (_.isNil(time)) {
return ''
}
return moment(time * 1000).format('YYYY-MM-DD HH:mm:ss')
}
function parseTimeInHm (time) {
if (_.isNil(time)) {
return ''
}
return moment(time * 1000).format('HH:mm')
}
function nowTime () {
return parseInt(((new Date()).getTime()) / 1000)
}
function parseTimeStamp (time) {
return parseInt(((new Date(time)).getTime()) / 1000)
}
function timeSpan (time) {
const span = time
let des = ''
if (Math.floor(span / (24 * 60 * 60)) > 0) {
des += Math.floor(span / (24 * 60 * 60)) + '天'
}
if (Math.floor(span / (60 * 60)) % 24 > 0) {
des += Math.floor(span / (60 * 60)) % 24 + '小时'
}
if (Math.floor((span / 60) % 60) > 0) {
des += Math.floor((span / 60) % 60) + '分'
}
if (Math.floor(span % 60) > 0) {
des += Math.floor(span % 60) + '秒'
}
return des
}
// 获取前一天
function getTimePrev (time) {
return moment(time * 1000).subtract(1, 'days').format('YYYY-MM-DD')
}
function parseTimeInYmdhhmm (time) {
if (_.isNil(time)) {
return ''
}
return moment(time * 1000).format('YYYY-MM-DD HH:mm')
}
function formatTimeInYmd (time) {
if (_.isNil(time)) {
return ''
}
return moment(time).format('YYYY-MM-DD')
}
function getDate (time) {
if (_.isNil(time)) {
return ''
}
return new Date(time)
}
// 随机获取从0到n的随机整数
function random (n) {
return Math.ceil(Math.random() * n)
}
// 验证身份证号
function checkIDCard (idcard) {
if (idcard.length !== 18) {
return false
}
// 加权因子
const weightFactor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
// 校验码
const checkCode = ['1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2']
const code = idcard + ''
const last = idcard[17].toLowerCase()// 最后一位
const seventeen = code.substring(0, 17)
// ISO 7064:1983.MOD 11-2
// 判断最后一位校验码是否正确
const arr = seventeen.split('')
const len = arr.length
let num = 0
for (let i = 0; i < len; i++) {
num = num + arr[i] * weightFactor[i]
}
// 获取余数
const resisue = num % 11
const lastNo = checkCode[resisue]
if (last !== lastNo) {
return false
}
// 格式的正则
// 正则思路
/*
第一位不可能是0
第二位到第六位可以是0-9
第七位到第十位是年份,所以七八位为19或者20
十一位和十二位是月份,这两位是01-12之间的数值
十三位和十四位是日期,是从01-31之间的数值
十五,十六,十七都是数字0-9
十八位可能是数字0-9,也可能是x
*/
const idcardPatter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[x|X])$/
// 判断格式是否正确
return idcardPatter.test(idcard)
}
export default {
parseTimeInYmd,
parseTimeInYmdHm,
parseTimeInYmdHms,
parseTimeInHm,
nowTime,
parseTimeStamp,
timeSpan,
getTimePrev,
parseTimeInYmdhhmm,
formatTimeInYmd,
getDate,
random,
checkIDCard
}
// 调用方法
import dateUtil from 'dateUtil'
methods:{
parseTime(time) {
dateUtil.parseTimeInYmd(time)
}
}