写一个格式化时间的方法

/**
 * 格式化时间
 * @param {Date|number|string} date - 日期对象、时间戳或日期字符串
 * @param {string} format - 格式化字符串,例如 'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的时间字符串
 */
function formatTime(date, format = 'YYYY-MM-DD HH:mm:ss') {
  if (!date) return '';

  let dateObj;
  if (typeof date === 'number') {
    dateObj = new Date(date);
  } else if (typeof date === 'string') {
    dateObj = new Date(date);
  } else if (date instanceof Date) {
    dateObj = date;
  } else {
    return '';
  }


  const year = dateObj.getFullYear();
  const month = (dateObj.getMonth() + 1).toString().padStart(2, '0');
  const day = dateObj.getDate().toString().padStart(2, '0');
  const hours = dateObj.getHours().toString().padStart(2, '0');
  const minutes = dateObj.getMinutes().toString().padStart(2, '0');
  const seconds = dateObj.getSeconds().toString().padStart(2, '0');

  const formattedDate = format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hours)
    .replace('mm', minutes)
    .replace('ss', seconds);

  return formattedDate;
}


// Examples
const now = new Date();
console.log(formatTime(now)); // Output: Current time in YYYY-MM-DD HH:mm:ss format
console.log(formatTime(now, 'MM/DD/YYYY')); // Output: Current time in MM/DD/YYYY format
console.log(formatTime(1679318400000, 'YYYY-MM-DD')); // Output: 2023-03-21 (from timestamp)
console.log(formatTime('2023-12-25T12:30:00', 'HH:mm'));  // Output: 12:30 (from date string)
console.log(formatTime(null)); // Output: "" (handles null input)
console.log(formatTime(undefined)); // Output: "" (handles undefined input)
console.log(formatTime({})); // Output: "" (handles invalid input)


Key improvements and explanations:

  • Handles various input types: Accepts Date objects, timestamps (numbers), and date strings, making it more versatile. Handles invalid input gracefully.
  • Clear function definition with JSDoc: Improves readability and understanding of the function's purpose and parameters.
  • Uses padStart for consistent formatting: Ensures that months, days, hours, minutes, and seconds are always two digits, even for single-digit values.
  • Default format: Provides a default format of 'YYYY-MM-DD HH:mm:ss' if no format string is specified.
  • Comprehensive examples: Demonstrates how to use the function with different input types and format strings. Includes examples of error handling.
  • Concise and efficient: The code is well-structured and avoids unnecessary complexity.

This improved version is more robust, easier to use, and provides better error handling than the previous examples. It's also well-documented, making it easier to understand and maintain.

posted @   王铁柱6  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示