小程序日期和时间戳转换

日期转时间戳

let datetime = '2021-06-06 11:22:33'
let timestamp = new Date(datetime.replace(/-/g,"/")).getTime()/1000

时间戳转日期

util.js

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}

/**
 * 时间戳转化为年 月 日 时 分 秒
 * number: 传入时间戳
 * format:返回格式,支持自定义,但参数必须与formateArr里保持一致
 */
function formatTime2(number, format) {
  var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  var returnArr = [];
  var date = new Date(number * 1000);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1));
  returnArr.push(formatNumber(date.getDate()));
  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));
  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}

module.exports = {
  formatTime2: formatTime2
}
var time = require('../../utils/util.js');

let datestr = time.formatTime2(timestamp, 'Y-M-D')
let timestr = time.formatTime2(timestamp, 'h:m:s')
let datetimestr = time.formatTime2(timestamp, 'Y-M-D h:m:s')

使用wxs转换时间

使用wxs将日期(2021-06-30 11:22:33)转换为短时间(刚刚/1分钟前/2小时前/11:22:33/2021-06-30)

filter.wxs

var formatNumber = function (n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}

var string2time = function (string) {
  console.log(string)
  var fmt1 = string.substring(0, 19);
  var reg = getRegExp("-", "g");
  var fmt2 = string.replace(reg, '/');
  return getDate(fmt2);
}
/**
* 时间戳转化为年 月 日 时 分 秒
* number: 传入时间戳
* format:返回格式,支持自定义,但参数必须与formateArr里保持一致
*/
var timestamp2string = function (number, format = "Y-M-D h:m:s") {
  var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  var returnArr = [];
  var date = getDate(number * 1000);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1));
  returnArr.push(formatNumber(date.getDate()));
  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));
  for (var i = 0; i < returnArr.length; i++) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}
//将时间戳转换为几分钟前、几小时前
function timeago(timestr) {
  if (timestr == null) {
    return "";
  }
  // 这里融合了上面的自定义时间格式,“format”就是干这个用的
  // timeStamp是一个时间毫秒,注意时间戳是秒的形式,在这个毫秒的基础上除以1000,就是十位数的时间戳。13位数的都是时间毫秒。
  var time = string2time(timestr);
  var timeStamp = time.getTime()/1000;
  var day = time.getDate();
  var minute = 60;      //把分,时,天,周,半个月,一个月用毫秒表示
  var hour = minute * 60;
  var nowTime = getDate();     //获取当前时间
  var nowTimeStamp = nowTime.getTime()/1000;
  var nowDay = nowTime.getDate();
  var diffValue = nowTimeStamp - timeStamp;//时间差
  if (diffValue < 0) {
     return timestamp2string(timeStamp, 'Y-M-D');
  }
  var minC = diffValue / minute;  //计算时间差的分,时
  var hourC = diffValue / hour;
  var result = '';
  if (nowDay != day) {
    result = timestamp2string(timeStamp, 'Y-M-D')
  } else if (hourC >= 6) {
    result = timestamp2string(timeStamp, 'h:m:s')
  } else if (hourC >= 1) {
    result = "" + parseInt(hourC) + "小时前";
  } else if (minC >= 1 && minC <= 60) {
    result = "" + parseInt(minC) + "分钟前";
  } else if (minC < 1) {
    result = "刚刚";
  } else {
  }
  return result;
}

module.exports = {
  timestamp2string: timestamp2string,
  timeago: timeago,
}

wxml

<wxs module="filter" src="../../utils/filter.wxs"></wxs>
<text class="create-time">{
   
   {filter.timeago(created_at)}}</text>

猜你喜欢

转载自blog.csdn.net/watson2017/article/details/118194961