*和历控件中日期最小值是1863年6月8日,德川幕府正式向入侵的英国舰队宣战;超过这个日期会发生越界异常
和历格式:
1.平成18年9月26日(平成18/09/26)
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
DateTime dt = DateTime.Parse("2006/09/26");
string strWareki = dt.ToString("ggyy年MM月dd日", ci);//string strWareki = dt.ToString("ggyy/MM/dd", ci);
2.平成18年9月26日转回2006/09/26
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
string strWareki = "平成18/09/26";
string strDate = DateTime.ParseExact(strWareki, "ggyy/MM/dd", ci).ToString("yyyy/MM/dd");
3.2006/09/26 转换为 平18/09/26 ( "平"为"平成"的简写)
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
DateTime dt = DateTime.Parse("2006/09/26");
string strWareki = ci.DateTimeFormat.GetAbbreviatedEraName(cal.GetEra(dt)) + dt.ToString("yy/MM/dd", ci);
4.2006/09/26 转换为 H18/09/26 ( "H"为"平成"的英文简写)
利用反射,需要引用 System.Reflection , 获取 DateTimeFormatInfo 中非公开的属性 —— AbbreviatedEnglishEraNames
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
DateTime dt = DateTime.Parse("2006/09/26");
Type t = typeof( DateTimeFormatInfo );
PropertyInfo pi = t.GetProperty( "AbbreviatedEnglishEraNames", BindingFlags.NonPublic|BindingFlags.Instance );
string[] engEras = (string[])pi.GetValue( ci.DateTimeFormat, null );
int era = cal.GetEra(dt);
string strWareki = engEras[era-1] + dt.ToString("yy/MM/dd", ci);