小程序时间戳转换
//时间间隔函数
export function timeInterval(timesData) {
//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
var dateBegin = timesData
var dateEnd = new Date()
var dateDiff = Math.abs( dateEnd.getTime() - dateBegin )
var yearDiff = Math.floor(dateDiff / (24 * 3600 * 1000*365))
var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000))
var leave1 = dateDiff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
var hours = Math.floor(leave1 / (3600 * 1000))//计算出小时数
//计算相差分钟数
var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
var minutes = Math.floor(leave2 / (60 * 1000))//计算相差分钟数
//计算相差秒数
var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
var seconds = Math.round(leave3 / 1000)
var timesString = ''
if (yearDiff!=0){
timesString = yearDiff + '年前'
} else if (yearDiff == 0 && dayDiff != 0) {
timesString = dayDiff + '天前'
} else if (dayDiff == 0 && hours != 0) {
timesString = hours + '小时前'
} else if (hours == 0 && minutes != 0) {
timesString = minutes + '分钟前'
} else if (minutes == 0 && seconds<60){
timesString = '刚刚'
}
return timesString
}
// 日期格式化
export function parseTime(time, pattern) {
if (arguments.length === 0 || !time) {
return null
}
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '')
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
}
使用方法

import Big from "big.js";
Big.DP = 2;
export function plus(arr: any[]) {
let res = 0;
for (const n of arr) {
res = Big(res).plus(n);
}
return res.toString();
}
export function minus(x, y) {
return Big(x).minus(y).toString();
}
export function times(arr: any[]) {
let res = 1;
for (const n of arr) {
res = Big(res).times(n);
}
return res.toString();
}
export function div(x, y) {
return Big(x).div(y).toString();
}
封装一些常用的date对象
export function format_datetime_to_timestamp(value: string) {
if (value === '' || value == null) {
return value
}
let stamp = new Date(value).getTime()
return stamp + ''
}
export function format_timestamp_to_DateTime(timestamp: any, format = 'yyyy-MM-dd') {
format = format.replace(/[Y]/g, 'y').replace(/[D]/g, 'd').replace(/[h]/g, 'H')
format = format.replace(/-mm/g, '-MM').replace(/mm-/g, 'MM-')
format = format.replace(/:MM/g, ':mm').replace(/MM:/g, 'mm:')
return dateFormat(timestamp, format)
}
const dateFormat = function (timestamp: any, fmt = 'yyyy-MM-dd') {
if (!timestamp) {
return ''
}
let date = new window.Date(Number(timestamp))
var o = {
'y': date.getFullYear(), // 年份,注意必须用getFullYear
'M': date.getMonth() + 1, // 月份,注意是从0-11
'd': date.getDate(), // 日期
'q': Math.floor((date.getMonth() + 3) / 3), // 季度
'w': ['日', '一', '二', '三', '四', '五', '六'][date.getDay()], // 星期,注意是0-6
'H': date.getHours(), // 24小时制
'h': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 12小时制
'm': date.getMinutes(), // 分钟
's': date.getSeconds(), // 秒
'S': date.getMilliseconds() // 毫秒
}
for (var i in o) {
fmt = fmt.replace(new RegExp(i + '+', 'g'), function (m) {
var val = o[i] + ''
if (i === 'w') return val
for (var j = 0, len = val.length; j < m.length - len; j++) val = '0' + val
return m.length === 1 ? val : val.substring(val.length - m.length)
})
}
return fmt
}
export
function getTimeRangeByArray(arr){
const arrTemp = []
if(arr && arr.length > 1){
arrTemp.push(new Date(arr[0]))
arrTemp.push(new Date(arr[1]))
}
return arrTemp;
}
export function getTimeRangeByJson(json){
const arrTemp = []
const obj = JSON.parse(json)
if(obj && obj.start && obj.end){
arrTemp.push(new Date(obj.start))
arrTemp.push(new Date(obj.end))
}
return arrTemp;
}
function getCurrentDate() {
return new Date()
}
function getQuarterSeasonStartMonth(month) {
var spring = 0
var summer = 3
var fall = 6
var winter = 9
if (month < 3) {
return spring
}
if (month < 6) {
return summer
}
if (month < 9) {
return fall
}
return winter
}
function getMonthDays(year, month) {
var relativeDate = new Date(year, month, 1)
var relativeMonth = relativeDate.getMonth()
var relativeYear = relativeDate.getFullYear()
if (relativeMonth === 11) {
relativeYear++
relativeMonth = 0
} else {
relativeMonth++
}
var millisecond = 1000 * 60 * 60 * 24
var nextMonthDayOne = new Date(relativeYear, relativeMonth, 1)
return new Date(nextMonthDayOne.getTime() - millisecond).getDate()
}
function formatDate(date) {
var myyear = date.getFullYear()
var mymonth = date.getMonth() + 1
var myweekday = date.getDate()
if (mymonth < 10) {
mymonth = '0' + mymonth
}
if (myweekday < 10) {
myweekday = '0' + myweekday
}
return (myyear + '-' + mymonth + '-' + myweekday)
}
function getCurrentYear() {
var startStop = []
var currentDate = getCurrentDate()
var currentYear = currentDate.getFullYear()
var currentYearFirstDate = new Date(currentYear, 0, 1)
var currentYearLastDate = new Date(currentYear, 11, 31)
startStop.push(formatDate(currentYearFirstDate))
startStop.push(formatDate(currentYearLastDate))
return startStop
}
function getYearStartMonth(month) {
var up = 0
var down = 6
if (month < 6) {
return up
}else{
return down
}
}
function getHalfYearSeason() {
var startStop = []
var currentDate = getCurrentDate()
var currentMonth = currentDate.getMonth()
var currentYear = currentDate.getFullYear()
var quarterSeasonStartMonth = getYearStartMonth(currentMonth)
var quarterSeasonEndMonth = quarterSeasonStartMonth + 5
var quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth, 1)
var quarterSeasonEndDate = new Date(currentYear, quarterSeasonEndMonth, getMonthDays(currentYear, quarterSeasonEndMonth))
startStop.push(formatDate(quarterSeasonStartDate))
startStop.push(formatDate(quarterSeasonEndDate))
return startStop
}
function getCurrentSeason() {
var startStop = []
var currentDate = getCurrentDate()
var currentMonth = currentDate.getMonth()
var currentYear = currentDate.getFullYear()
var quarterSeasonStartMonth = getQuarterSeasonStartMonth(currentMonth)
var quarterSeasonEndMonth = quarterSeasonStartMonth + 2
var quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth, 1)
var quarterSeasonEndDate = new Date(currentYear, quarterSeasonEndMonth, getMonthDays(currentYear, quarterSeasonEndMonth))
startStop.push(formatDate(quarterSeasonStartDate))
startStop.push(formatDate(quarterSeasonEndDate))
return startStop
}
function getMonthEndDate() {
var startStop = []
var currentDate = getCurrentDate()
var currentMonth = currentDate.getMonth()
var currentYear = currentDate.getFullYear()
var nowDay = currentDate.getDate();
var monthStartDate = new Date(currentYear, currentMonth, 1);
var monthEndDate = new Date(currentYear, currentMonth, getMonthDays(currentMonth, currentMonth));
startStop.push(formatDate(monthStartDate))
startStop.push(formatDate(monthEndDate))
return startStop
}
function getWeekDate() {
var startStop = []
var currentDate = getCurrentDate()
var currentMonth = currentDate.getMonth()
var currentYear = currentDate.getFullYear()
var nowDayOfWeek = currentDate.getDay();
var nowDay = currentDate.getDate();
var weekStartDate = new Date(currentYear, currentMonth, nowDay - nowDayOfWeek + 1);
var weekEndDate = new Date(currentYear, currentMonth, nowDay + (6 - nowDayOfWeek) + 1);
startStop.push(formatDate(weekStartDate))
startStop.push(formatDate(weekEndDate))
return startStop
}
function getDayDate() {
var startStop = []
var currentDate = getCurrentDate()
startStop.push(formatDate(currentDate))
startStop.push(formatDate(currentDate))
return startStop
}
export
function getStartEnd(index){
var startStop = []
switch(index) {
case 0:
startStop=getDayDate()
break;
case 1:
startStop=getWeekDate()
break;
case 2:
startStop=getMonthEndDate()
break;
case 3:
startStop=getCurrentSeason()
break;
case 4:
startStop=getHalfYearSeason()
break;
case 5:
startStop=getCurrentYear()
break;
default:
}
return startStop;
}