utils 时间戳转任意日期字符串

/**

* 时间戳转换成日期工具函数

* @param fmt 必填 目标日期显示格式

* @param timestamp 必填 时间戳

* @param type 选填 输出时间是否跟随当前时区,1表示输出结果为当前时区时间,2表示输出结果为北京时区时间, 默认值为1

*

* 示例:

* 当前时区为GMT+0800 (中国标准时间),format('yyyy-MM-dd hh:mm', 1537174760000) ---> 2018-09-17 16:59

* 当前时区为GMT+0800 (中国标准时间),format('yyyy-MM-dd hh:mm:ss', 1537174760000) ---> 2018-09-17 16:59:20

* 当前时区为GMT+0900 (日本标准时间),format('yyyy-MM-dd hh:mm:ss', 1537174760000) ---> 2018-09-17 17:59:20

* 当前时区为GMT+0900 (日本标准时间),format('yyyy-MM-dd hh:mm:ss', 1537174760000, 2) ---> 2018-09-17 16:59:20

*/


const format = function (fmt, timestamp, type = 1) {
  const t = type === 1 ? timestamp : timestamp + new Date().getTimezoneOffset() * 60000 + 8 * 3600000;
  const date2 = new Date(t);

  const o = {
    "M+": date2.getMonth() + 1, // 月份
    "d+": date2.getDate(), // 日
    "h+": date2.getHours(), // 小时
    "m+": date2.getMinutes(), // 分
    "s+": date2.getSeconds(), // 秒
    "q+": Math.floor((date2.getMonth() + 3) / 3), // 季度
    "S": date2.getMilliseconds(), // 毫秒
  };

  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (`${date2.getFullYear()}`).substr(4 - RegExp.$1.length),
    );
  }

  for (const k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : (`00${o[k]}`).substr((`${o[k]}`).length),
      );
    }
  }

  return fmt;
};

使用: format('今天是yyyy年MM月dd日', +new Date())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值