【 JavaScript 】new Date() から年齢や日付、和暦を西暦へ加工する

こんにちはC.Cです!

私はFirebaseとReact(JavaScriptのフレームワーク)を使ってアプリを作ることが多いです。

FirestoreではTimeStampはミリ秒で記録されるため、アプリを作っていてよく使うなと感じた

ミリ秒などから年齢や日付等に変換する関数を紹介していきたいと思います。

スポンサーリンク

ミリ秒(生年月日) → 年齢

医療系のアプリを作っていると患者さんの年齢を表示したくなる

miriSecondsは生年月日のTimestampです。

const getOldYears = (miriSeconds) => {
  const today = new Date().getTime();

  const timeTillNow = today - miriSeconds;
  const daysTillNow = timeTillNow / (1000 * 3600 * 24);

  const DAYS_PER_MONTH = 365 / 12;
  const ageY = Math.floor(daysTillNow / 365);
  const ageM = Math.floor((daysTillNow - 365 * ageY) / DAYS_PER_MONTH);

  return `${ageY}歳${ageM}ヶ月`;
};
// 631119600000は1990年1月1日

const years_old = getOldYears(631119600000);
console.log(years_old);

//  36歳2ヶ月
//  (↑2026年2月27日現在)
スポンサーリンク

ミリ秒(生年月日) → yyyy年mm月dd日

普通に生年月日を表示したいときに

const getDateString = (miriSeconds) => {
  const dt = new Date(miriSeconds);
  const y = dt.getFullYear();
  const m = `00${dt.getMonth() + 1}`.slice(-2);
  const d = `00${dt.getDate()}`.slice(-2);
  const result = `${y}年${m}月${d}日`;
  return result;
};

const birthday = getDateString(631119600000);
console.log(birthday);

//  1990年01月01日
スポンサーリンク

ミリ秒 → hh:mm

処方箋を受け付けた時間などをデジタル時計のように画面に表示したいときに

const getTimeString = (miriSeconds) => {
  const dt = new Date(miriSeconds);

  const H = dt.getHours();
  const M =
    dt.getMinutes().toString().length === 1
      ? `0${dt.getMinutes().toString()}`
      : dt.getMinutes().toString();
  const result = `${H}:${M}`;
  return result;
};

const time = getTimeString(1772081726876);
console.log(time)

# 13:55

和暦(S63) → 西暦(1988年)

これはゴリ推しで…

大正1年(T01:1912年)〜令和30年(R30:2048年)まで対応

これはレセコンから自作アプリに処方情報を取り込むためにSIPSフォルダに出現するテキストファイルを扱うときに作りました。

const warekiToAC = (wareki) => {
  switch (wareki) {
    case 'T01':
      return 1912;
    case 'T02':
      return 1913;
    case 'T03':
      return 1914;
    case 'T04':
      return 1915;
    case 'T05':
      return 1916;
    case 'T06':
      return 1917;
    case 'T07':
      return 1918;
    case 'T08':
      return 1919;
    case 'T09':
      return 1920;
    case 'T10':
      return 1921;
    case 'T11':
      return 1922;
    case 'T12':
      return 1923;
    case 'T13':
      return 1924;
    case 'T14':
      return 1925;
    case 'T15':
      return 1926;
    case 'S01':
      return 1926;
    case 'S02':
      return 1927;
    case 'S03':
      return 1928;
    case 'S04':
      return 1929;
    case 'S05':
      return 1930;
    case 'S06':
      return 1931;
    case 'S07':
      return 1932;
    case 'S08':
      return 1933;
    case 'S09':
      return 1934;
    case 'S10':
      return 1935;
    case 'S11':
      return 1936;
    case 'S12':
      return 1937;
    case 'S13':
      return 1938;
    case 'S14':
      return 1939;
    case 'S15':
      return 1940;
    case 'S16':
      return 1941;
    case 'S17':
      return 1942;
    case 'S18':
      return 1943;
    case 'S19':
      return 1944;
    case 'S20':
      return 1945;
    case 'S21':
      return 1946;
    case 'S22':
      return 1947;
    case 'S23':
      return 1948;
    case 'S24':
      return 1949;
    case 'S25':
      return 1950;
    case 'S26':
      return 1951;
    case 'S27':
      return 1952;
    case 'S28':
      return 1953;
    case 'S29':
      return 1954;
    case 'S30':
      return 1955;
    case 'S31':
      return 1956;
    case 'S32':
      return 1957;
    case 'S33':
      return 1958;
    case 'S34':
      return 1959;
    case 'S35':
      return 1960;
    case 'S36':
      return 1961;
    case 'S37':
      return 1962;
    case 'S38':
      return 1963;
    case 'S39':
      return 1964;
    case 'S40':
      return 1965;
    case 'S41':
      return 1966;
    case 'S42':
      return 1967;
    case 'S43':
      return 1968;
    case 'S44':
      return 1969;
    case 'S45':
      return 1970;
    case 'S46':
      return 1971;
    case 'S47':
      return 1972;
    case 'S48':
      return 1973;
    case 'S49':
      return 1974;
    case 'S50':
      return 1975;
    case 'S51':
      return 1976;
    case 'S52':
      return 1977;
    case 'S53':
      return 1978;
    case 'S54':
      return 1979;
    case 'S55':
      return 1980;
    case 'S56':
      return 1981;
    case 'S57':
      return 1982;
    case 'S58':
      return 1983;
    case 'S59':
      return 1984;
    case 'S60':
      return 1985;
    case 'S61':
      return 1986;
    case 'S62':
      return 1987;
    case 'S63':
      return 1988;
    case 'S64':
      return 1989;
    case 'H01':
      return 1989;
    case 'H02':
      return 1990;
    case 'H03':
      return 1991;
    case 'H04':
      return 1992;
    case 'H05':
      return 1993;
    case 'H06':
      return 1994;
    case 'H07':
      return 1995;
    case 'H08':
      return 1996;
    case 'H09':
      return 1997;
    case 'H10':
      return 1998;
    case 'H11':
      return 1999;
    case 'H12':
      return 2000;
    case 'H13':
      return 2001;
    case 'H14':
      return 2002;
    case 'H15':
      return 2003;
    case 'H16':
      return 2004;
    case 'H17':
      return 2005;
    case 'H18':
      return 2006;
    case 'H19':
      return 2007;
    case 'H20':
      return 2008;
    case 'H21':
      return 2009;
    case 'H22':
      return 2010;
    case 'H23':
      return 2011;
    case 'H24':
      return 2012;
    case 'H25':
      return 2013;
    case 'H26':
      return 2014;
    case 'H27':
      return 2015;
    case 'H28':
      return 2016;
    case 'H29':
      return 2017;
    case 'H30':
      return 2018;
    case 'H31':
      return 2019;
    case 'R01':
      return 2019;
    case 'R02':
      return 2020;
    case 'R03':
      return 2021;
    case 'R04':
      return 2022;
    case 'R05':
      return 2023;
    case 'R06':
      return 2024;
    case 'R07':
      return 2025;
    case 'R08':
      return 2026;
    case 'R09':
      return 2027;
    case 'R10':
      return 2028;
    case 'R11':
      return 2029;
    case 'R12':
      return 2030;
    case 'R13':
      return 2031;
    case 'R14':
      return 2032;
    case 'R15':
      return 2033;
    case 'R16':
      return 2034;
    case 'R17':
      return 2035;
    case 'R18':
      return 2036;
    case 'R19':
      return 2037;
    case 'R20':
      return 2038;
    case 'R21':
      return 2039;
    case 'R22':
      return 2040;
    case 'R23':
      return 2041;
    case 'R24':
      return 2042;
    case 'R25':
      return 2043;
    case 'R26':
      return 2044;
    case 'R27':
      return 2045;
    case 'R28':
      return 2046;
    case 'R29':
      return 2047;
    case 'R30':
      return 2048;
  }
};

const seireki = warekiToAC("H01")
console.log(seireki)

# 1989

Xでフォローしよう

おすすめの記事