QA@IT

toLocaleDateStringを使って、"10年以下"を表す式を作りたい。

7113 PV

下記のコードは、"平成10年以下の場合、文字に赤色"を,"それ以外の場合、文字に青色"を
設定するようにしたものです。しかし、これでは"平成"のみにしか適用できません。
toLocaleDateStringを使って、次期以降の元号にも適用させるには、どのように書けばいいのでしょうか。

<SCRIPT type="text/javascript">
 <!--

var now=new Date();
var Gengou = now.toLocaleDateString("ja-JP-u-ca-japanese", { era: "long", year:"numeric" })
    .replace(/\u200e/g, "").replace(" ", "");

if(Gengou < "平成10年"){
  document.write("<p>");
  document.write("<span style='color:red'>");
  document.write("あいうえお");
  document.write("</span>");
  document.write("</p>");
}
else{
  document.write("<p>");
  document.write("<span style='color:blue'>");
  document.write("あいうえお");
  document.write("</span>");
  document.write("</p>");
}
//-->
</script>
  • 要件が不明です。「新年号5年」とかは何色ですか?タイトル見ると赤に見えるけど、本文読むと青に見える。あと昭和以前は検討対象外ですよね? -
  • 実は、1つ下の質問のコードで、目的の要素に色を付けたいのですが、年・月・日はそれぞれ桁が変わる(文字数が増減する)ので、それぞれ組み合わせて条件式を立てなければならないのです。しかし、月日は問題はないのですが、元号の年の桁(2~3桁ぐらい)をどのように導き出せばいいのか分からないのです。 -
  • 質問に答えないのは、意図的ですか?それとも答えているつもりですか? -

回答

個人的見解回答ですが
件名の
『toLocaleDateStringを使って、"10年以下"を表す式を作りたい。』は
できない(やらない)!

『個人的に』とある通り、このようなケースでの文字での比較演算は、わたしはやりません
西暦のままor文字列をいったん西暦に直し数値で比較演算をやらせます

編集 履歴 (0)
  • 実は、1つ下の質問のコードで、目的の要素に色を付けたいのですが、年・月・日はそれぞれ桁が変わる(文字数が増減する)ので、それぞれ組み合わせて条件式を立てなければならないのです。しかし、月日は問題はないのですが、元号の年の桁(2~3桁ぐらい)をどのように導き出せばいいのか分からないのです。 -
  • 和暦にするからわからなくなるだけで
    平成10年は西暦で1998年なのだから
    1998と比較すればいいし
    新元号も起点となる西暦があるのでそれと比較すればいいだけ

    すみません
    文字と数字を切り分けるのは基本と思われますが??

    なんでも一括でやりすぎて、要求(やりたいこと)ができないというのは本末転倒ではないでしょうか。
    -

"if(Gengou < "平成10年")" を"if(Gengou == [1-9])としたら、
次期以降の元号の"10年以下"に適用されそうですが、他にないですかね。

編集 履歴 (0)
  • これだと、"Genngou == 1桁の数字"となるため、駄目ですね。
    数字のみを抽出するメタ文字を付けなければいけませんが、どのように
    書けばいいでしょうか。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。