こうこく
作 ▸

JavaScript 現在日時との差を「n秒前」「n分前」みたいに適度に計算して文字列にするやつ

よくあるやつ 日までのみ対応

/**
 * 日時1から日時2がどれだけ過去かを文字列で表現して返す
 * 10秒前までなら "今"、10秒前なら "10秒前"、61秒前なら "1分前" みたいに
 * @param {Date} dt1 未来
 * @param {Date} dt2 過去
 * @return {String} 秒>分>時間>日 のうち最小単位
 */
const getOffsetString = (dt1, dt2) => {
  const offsetTs = dt1.getTime() - dt2.getTime();

  if (offsetTs < 10000) {
    return '今';
  } else if (offsetTs < 60000) {
    return `${Math.floor(offsetTs / 1000)}秒前`;
  } else if (offsetTs < 3600000) {
    return `${Math.floor(offsetTs / 60000)}分前`;
  } else if (offsetTs < 86400000) {
    return `${Math.floor(offsetTs / 3600000)}時間前`;
  } else {
    return `${Math.floor(offsetTs / 86400000)}日前`;
  }
};
作 ▸

JavaScript 文字のパディング (右埋め・左埋め・中央寄せ)

String.repeat() がES6なのでIE11では動きまてん

右埋め
const padRight = (str, padchar, len) => {
  const padstr = padchar.repeat(len);
  return `${str}${padstr}`.slice(0, len);
};
左埋め
const padLeft = (str, padchar, len) => {
  const padstr = padchar.repeat(len);
  return `${padstr}${str}`.slice(-len);
};
中央寄せ
const padSide = (str, padchar, len) => {
  const lPadstr = padchar.repeat(Math.floor(len / 2));
  const rPadstr = padchar.repeat(Math.ceil(len / 2));
  const padded = `${lPadstr}${str}${rPadstr}`;
  const start = Math.floor((padded.length - len) / 2);
  return padded.slice(start, start + len);
};