javascriptで、元号の”1年”を”元年”と表示させるには

投稿者: Anonymous

下記のコードは、javascriptで”和暦”と”西暦”,及び”干支”を表示させるものですが、
新元号に替わりましたら、元号は『〇〇1年』と表示されるはずです。
これを『〇〇元年』と表示させるには、どのようにコードを書けばいいでしょうか。
よろしくお願いします。

 <SCRIPT type="text/javascript">
 <!--
var now=new Date();
var Seireki=now.getFullYear();
var Wareki=now.toLocaleDateString("ja-JP-u-ca-japanese", { year:"numeric" }).replace("年", "").replace(/u200e/g, "").replace(" ", "");
var Eto=new Array("申(猿)", "酉(鳥)", "戌〔犬〕", "亥(猪)", "子(鼠)", "丑(牛)", "寅(虎)", "卯(兎)", "辰(竜)", "巳(蛇)", "午(馬)", "未(羊)");
var EtoNum=Seireki % 12;

  document.write("<p>");
  document.write("&nbsp;&nbsp;<span style='font-size : 25; color : red; font-weight:bold'>");
  document.write(Wareki);
  document.write(" (");
  document.write(Seireki);
  document.write(")");
  document.write("年  ");
  document.write(Eto[EtoNum]);
  document.write("</span>");
  document.write("</p>");
//-->
</script>

解決

アイデアはsakuroさんのものと同じことですが、(一部ブラウザで※)JavaScriptの正規表現では否定的後読み?<!が使えないせいでエラーになっているようなので修正したものです。

(※否定的後読みが動くブラウザもあるとのこと。)

_x000D_

_x000D_

var now=new Date(1989,10,1);_x000D_
var Wareki=now.toLocaleDateString("ja-JP-u-ca-japanese", { era: "long", year:"numeric" })_x000D_
    .replace("年", "").replace(/u200e/g, "").replace(" ", "")_x000D_
    .replace(/(^|[^d])1(?=$|[^d])/, '$1元');_x000D_
alert(Wareki); //-> 平成元

_x000D_

_x000D_

_x000D_

また、SafariのJavaScriptでは、era: "long"を指定しないと、「平成」が出力されなかったので追加してあります。

ただ、新元号施行の時点では、多くのブラウザのJavaScriptはまだ新元号に対応していないでしょうから、yyzさんの書かれたような現実的な対応がどこかで必要になるかと思います。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *