最全的时间转换 ts

这个博客介绍了如何使用JavaScript实现一个名为`parseTime`的函数,该函数可以将不同格式的时间值(如日期对象、字符串或数字时间戳)转换为预定义格式的字符串。函数支持包括完整日期、小时分钟秒以及星期在内的多种格式,并能处理Safari浏览器中可能遇到的日期解析问题。示例展示了如何使用这个函数进行时间格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值