最全的时间转换 ts

各种类型 时间形式  转为字符串

 

time:时间值 

cFormat:    {y}-{m}-{d} {h}:{i}:{s}

                  {y}-{m}-{d} {h}:{i}:{s} {a}

                  {y}/{m}/{d} 

// Parse the time to string
 const parseTime = (
  time?: object | string | number | null,
  cFormat?: string
): string | null => {
  if (time === undefined || !time) {
    return null;
  }
  const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}";
  let date: Date;
  if (typeof time === "object") {
    date = time as Date;
  } else {
    if (typeof time === "string") {
      if (/^[0-9]+$/.test(time)) {
        // support "1548221490638"
        time = parseInt(time);
      } else {
        // support safari
        // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
        time = time.replace(new RegExp(/-/gm), "/");
      }
    }
    if (typeof time === "number" && time.toString().length === 10) {
      time = time * 1000;
    }
    date = new Date(time);
  }
  const formatObj: { [key: string]: number } = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  };
  const timeStr = format.replace(/{([ymdhisa])+}/g, (result, key) => {
    const value = formatObj[key];
 
    // Note: getDay() returns 0 on Sunday
    if (key === "a") {
      console.log(value);
      return `星期${["日", "一", "二", "三", "四", "五", "六"][value]}` ;
    }
    return value.toString().padStart(2, "0");
  });
  return timeStr;
};

调用方法, 

parseTime(new Date());
// console :2020-11-30 10:36:24

parseTime('2020-12-2');
// console :2020-12-02 00:00:00
    
parseTime(1604938866479);
// console :2020-11-10 00:21:06

parseTime("1604938866479");
// console :2020-11-10 00:21:06

parseTime("1604938866479","{y}-{m}-{d} {h}:{i}:{s}{a}");
// console : 2020-11-10 00:21:06 星期二

parseTime("1604938866479","{m}/{d}/{y}");
// console : 12/02/2020

parseTime(1);
// console :1970-01-01 08:00:00

parseTime(null);
// console :null

parseTime("");
// console :null

parseTime(undefined);
// console :null

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值