ICU4C C++和暦変換
IBMのICU4Cを使って和暦変換するプログラムを作ってみた。
例えば…
↓↓↓
1989年1月7日→昭和64年1月7日
1989年1月8日→平成 1年1月8日
#include <iostream> #include "unicode/smpdtfmt.h" #include "japancal.h" using namespace std; string wareki(int year,int manth,int day){ Locale mylocale("ja"); UErrorCode success=U_ZERO_ERROR; UnicodeString myString="Gy.M.d"; JapaneseCalendar* jcal=new JapaneseCalendar(mylocale,success); SimpleDateFormat sdf(myString,success); sdf.adoptCalendar(jcal); //和暦変換: year-1988,manth-1,day jcal->set(year-1988,manth-1,day); UDate date=jcal->getTime(success); myString.remove(); UnicodeString ubody=sdf.format(date,myString); //EUC_jpへ変換 char target[ubody.length()+1]; ubody.extract(0, ubody.length(), target, "euc-jp"); string t=target; return t; } int main(int argc,char* argv[]){ cout << wareki(1989,1,7) <<endl; cout << wareki(1989,1,8) <<endl; return 0; }