Source: utils/formatGitDate.js

/**
 * ISO 문자열을 Git 로그 형식의 날짜 문자열로 변환합니다.
 * 실제 `git log` 명령어와 유사한 형식으로 표현됩니다.
 *
 * @param {string} isoString ISO 형식의 날짜 문자열 (e.g. new Date().toISOString())
 * @returns {string} Git 로그 스타일로 포맷된 날짜 문자열
 *
 * @example
 * formatGitDate("2025-05-31T13:22:59.000Z"); // 'Sat May 31 22:22:59 2025 +0900'
 */

function formatGitDate(isoString) {
  const date = new Date(isoString);

  const weekday = date.toLocaleDateString('en-US', { weekday: 'short' });
  const month = date.toLocaleDateString('en-US', { month: 'short' });

  const day = String(date.getDate()).padStart(2, '0');
  const time = date.toTimeString().split(' ')[0];
  const year = date.getFullYear();

  const timezoneOffset = -date.getTimezoneOffset();
  const sign = timezoneOffset >= 0 ? '+' : '-';
  const absOffset = Math.abs(timezoneOffset);
  const tzHours = String(Math.floor(absOffset / 60)).padStart(2, '0');
  const tzMinutes = String(absOffset % 60).padStart(2, '0');
  const tzString = `${sign}${tzHours}${tzMinutes}`;

  return `${weekday} ${month} ${day} ${time} ${year} ${tzString}`;
}

module.exports = formatGitDate;