Unityで使用可能な.NETクラスを見ていたらJapaneseCalendarなるものが有ったのでちょっと調べて使ってみました。.NETにはこんなクラスも有るんですね。
調べてみたらこのドキュメントが参考になりそうでした。残念ながらJScriptのサンプルが無かったのでC#で作ってみました。
JapaneseCalendar.GetYear メソッド (System.Globalization)
http://msdn.microsoft.com/ja-jp/library/system.globalization.japanesecalendar.getyear(v=vs.80).aspx
プログラムはこちら。動作内容は和暦での「現在の年月日」と「2年10ヶ月後」の年月日を表示するというものです。
以下の2つのファイルを適当なGameObjectに貼り付けて動作させて下さい。
【SamplesJapaneseCalendar.cs】
using UnityEngine; using System; using System.Globalization; public class SamplesJapaneseCalendar : MonoBehaviour { public static void Main() { DateTime myDT = DateTime.Now; JapaneseCalendar myCal = new JapaneseCalendar(); Debug.Log( "本日:" ); DisplayValues(myCal, myDT); // 2年10ヶ月進める myDT = myCal.AddYears( myDT, 2 ); myDT = myCal.AddMonths( myDT, 10 ); Debug.Log( "2年10ヶ月後:" ); DisplayValues( myCal, myDT ); } public static void DisplayValues( Calendar myCal, DateTime myDT ) { String Gengo = ""; switch(myCal.GetEra( myDT )) { case 1: Gengo = "明治"; break; case 2: Gengo = "大正"; break; case 3: Gengo = "昭和"; break; case 4: Gengo = "平成"; break; } Debug.Log(Gengo+myCal.GetYear( myDT )+"年"+myCal.GetMonth( myDT )+"月"+myCal.GetDayOfMonth( myDT )+"日"); } }
【TestScript.cs】
using UnityEngine; using System.Collections; public class TestScript : MonoBehaviour { void Start () { SamplesJapaneseCalendar.Main(); } }
プログラムは元のサンプルを一部、Unity向けに修正するだけで動作しました。
この辺りはUntiyにC#が採用されている大きな利点ですね。
関連情報
数値と年号(元号)の対応ルールはこちらを参照。
JapaneseCalendar.GetEra メソッド (System.Globalization)
http://msdn.microsoft.com/ja-jp/library/system.globalization.japanesecalendar.getera(v=VS.80).aspx