js分隔字符串为数组,截取以及时间戳转换为日期
xuexi 2025-05-03 20:15:19 发表在:PHP 查看数:34
/**
 * 将时间戳格式化为指定日期字符串
 * @param {number|string} timestamp 时间戳(支持秒级或毫秒级)
 * @param {string} format 格式模板,默认'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的日期字符串
 */
function formatDate(timestamp, format = "YYYY-MM-DD HH:mm:ss") {
  // 处理传入的timestamp类型(兼容字符串和数字)
  let ts = Number(timestamp);

  // 自动检测并转换秒级时间戳(10位)
  if (ts < 9999999999) ts *= 1000;

  const date = new Date(ts);

  // 验证日期有效性
  if (isNaN(date)) return "Invalid Date";

  // 使用UTC时间(如需本地时间,移除UTC相关方法)
  const year = date.getUTCFullYear();
  const month = String(date.getUTCMonth() + 1).padStart(2, "0");
  const day = String(date.getUTCDate()).padStart(2, "0");
  const hours = String(date.getUTCHours()).padStart(2, "0");
  const minutes = String(date.getUTCMinutes()).padStart(2, "0");
  const seconds = String(date.getUTCSeconds()).padStart(2, "0");
  const milliseconds = String(date.getUTCMilliseconds()).padStart(3, "0");

  // 使用对象存储替换项,支持扩展更多格式
  const replacements = {
    YYYY: year,
    YY: String(year).slice(-2),
    MM: month,
    M: date.getUTCMonth() + 1, // 无前导零
    DD: day,
    D: date.getUTCDate(),
    HH: hours,
    H: date.getUTCHours(),
    mm: minutes,
    m: date.getUTCMinutes(),
    ss: seconds,
    s: date.getUTCSeconds(),
    SSS: milliseconds,
    ssS: milliseconds.slice(0, 2),
  };

  // 使用正则表达式一次性替换所有匹配项
  return format.replace(
    /(YYYY|YY|MM|M|DD|D|HH|H|mm|m|ss|s|SSS|ssS)/g,
    (match) => replacements[match] || ""
  );
}

// 使用示例
console.log(formatDate(1717027200)); // 秒级时间戳 → "2024-05-30 00:00:00"
console.log(formatDate(1717027200000, "YYYY/MM/DD")); // → "2024/05/30"
console.log(formatDate("invalid", "YY-M-D H:m:s")); // → "Invalid Date"


const parts = a.split("-"); // 用 "-" 分割字符串
const target = parts[1];      // 获取第二部分(索引从0开始)
最近访问时间:2025-05-10 05:28:17
知识库:341条鸣谢:TAY  备案号:蜀ICP备2024090044号