您的位置:首页 > 编程语言 > C#

C#公历与日本和历之间的转化

2011-07-24 14:55 190 查看
纪元名称纪元缩写公历日期
平成 (Heisei)
平 (H, h)
1989 年 1 月 8 日至今
昭和 (Showa)
昭 (S, s)
1926 年 12 月 25 日至 1989 年 1 月 7 日
大正 (Taisho)
大 (T, t)
1912 年 7 月 30 日至 1926 年 12 月 24 日
明治 (Meiji)
明 (M, m)
1868 年 9 月 8 日至 1912 年 7 月 29 日
static void Main(string[] args)
{
{//公历 转为 日本和历
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
string strDate = "2011/07/24";
DateTime dt = DateTime.Parse(strDate);
string strJpDate = dt.ToString("ggyy/MM/dd", ci);
Console.WriteLine("{0} = {1}", strDate, strJpDate); // output: 平成23/07/24
}
{//公历 转为 日本和历简写
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
string strDate = "2011/07/24";
DateTime dt = DateTime.Parse(strDate);
string strJpDate = ci.DateTimeFormat.GetAbbreviatedEraName(cal.GetEra(dt)) + dt.ToString("yy/MM/dd", ci);
Console.WriteLine("{0} = {1}", strDate, strJpDate); // output: 平18/09/26
}
{//公历 转为 日本和历英文简写
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
string strDate = "2011/07/24";
DateTime dt = DateTime.Parse(strDate);
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 strJpDate = engEras[era - 1] + dt.ToString("yy/MM/dd", ci);
Console.WriteLine("{0} = {1}", strDate, strJpDate); // output: H18/09/26
}

{//日本和历 转为 公历
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
string strJpDate = "平成23/07/24";
string strDate = DateTime.ParseExact(strJpDate, "ggyy/MM/dd", ci).ToString("yyyy/MM/dd");
Console.WriteLine("{0} = {1}", strJpDate, strDate);  // output: 2011/07/24
}
{//日本和历简写 转为 公历
CultureInfo ci = new CultureInfo("ja-JP");
Calendar cal = new JapaneseCalendar();
ci.DateTimeFormat.Calendar = cal;
string strJpDate = "平23/07/24";
string strDate = DateTime.ParseExact(strJpDate, "ggyy/MM/dd", ci).ToString("yyyy/MM/dd");
Console.WriteLine("{0}   = {1}", strJpDate, strDate);  // output: 2011/07/24
}

Console.ReadKey();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: