和历转换

*和历控件中日期最小值是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);

转载于:https://www.cnblogs.com/tsubakihouse/p/6844200.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值