时间戳处理

Posted by CodingWithAlice on April 12, 2020

时间戳处理

20230719更新:现在一般使用 moment

import moment from 'moment';

场景:后端传入时间戳,需要获取其中“月-日”展示

参考:把之前用到过的时间戳方式都整理了一下

总结:

4、处理时间戳的插件 date-fns
import {format} from 'date-fns';

filters: {
        formatTimeStamp: (ts) => format(ts * 1000, 'yyyy-MM-dd hh:mm:ss'),
    },
      
<span></span>
1、new Date()获取的时间是什么时间

答:运行环境的时间。如果是浏览器那就是电脑时间或者手机时间;如果是node.js那就是服务器时间 (注意:前台获取的时间都用处不大、用户可以改、不安全;通常时间用于从后端传入、服务器的时间一定是统一的、解析时间戳;)

2、JS获取当前时间戳方法

js中单独调用new Date(),例如document.write(new Date());显示的结果是:Mar 31 10:10:43 UTC+0800 2012 这种格式的时间; 但是用new Date() 参与计算会自动转换为从1970.1.1开始的毫秒数。

//方法1【不建议使用】
var timestamp =Date.parse(new Date());

注意:Date.parse()得到的结果将后三位(毫秒)转换成了000显示,使用时可能会出现问题。例如动态添加页面元素id的时候,不建议使用

//方法2
var timestamp =(new Date()).valueOf();
//方法3
var timestamp=new Date().getTime()
//方法4
var timestamp=+new Date();
3、把时间戳转换为“年-月-日”的方法封装
/** 
 * 时间戳转化为年 月 日 
 *
 * @param {*} timestamp ts: 传入时间戳
 * @param {*} format 返回格式,支持自定义,但参数必须与formateArr里保持一致
 */
function timeFormatTime(timestamp,format){
  const formateArr = ['Y', 'M', 'D'];
  let returnArr = [];

  let date = new Date(timestamp);
  let year = date.getFullYear()
  let month = date.getMonth() + 1
  let day = date.getDate()
  returnArr.push(year, month, day);  // 得到年-月-日

  returnArr = returnArr.map(formatNumber);

  for (var i in returnArr) {
      format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}
/* 输出 */
module.exports = {
  timeFormatTime:timeFormatTime
}

然后在要使用的页面中,打开index.js 进行变量声明

data:{
    createTime:''
}

然后再引入 组件,保存时间戳转换过来的值

let ss = 1530100597000;
var time = require('../../utils/util.js');
that.setData({
     createTime:time.timeFormatTime(ss, 'Y/M/D')
})