|
■No91269 (shu さん) に返信 > 漢字であれば以下で > Dim dt = Date.Parse(TextBox1.Text)
質問投稿が C# コードだったのに、何で例示コードが Visual Basic なんだろう……と思ったら、 質問時の分類が [C#] ではなく [.NET 全般] になっていたんですね。
> TextBox2.Text = $"{dt.ToString("gyy/MM/dd", jcul)}"
$ で始まる文字列表記は、VS2015 以降(C# 6.0 以上/VB14 以上)で使用可能な構文ですね。 河童 さんの環境は VS2010 だったかも。
> 令和対応のUpdateが適用されていることが前提です。
ということで、自分も書いてみました。 ただし下記の場合、 1912/07/30 → 明治45年でもあり大正元年でもある 1926/12/25 → 大正15年でもあり昭和元年でもある のように「元号が被る期間」については、新元号が優先されます。
// using System.Globalization;
/// <returns>R1.6月</returns> private static string getChangeEra(DateTime pDate) { var jp = new JapaneseCalendar(); if (pDate < jp.MinSupportedDateTime) { return ""; } var jpCal = new CultureInfo("ja-JP", true) { DateTimeFormat = { Calendar = jp } }; if (eraTable == null) { eraTable = (from value in new int[] { '?' } .Concat(Enumerable.Range('A', 26)) .Select(c => ((char)c).ToString()) let key = jpCal.DateTimeFormat.GetEra(value) where key > 0 select new { key, value }) .ToDictionary(_ => _.key, _ => _.value); } return eraTable[jp.GetEra(pDate)] + pDate.ToString("y'.'M月", jpCal); } private static Dictionary<int, string> eraTable = null;
#region おまけ /// <returns>令和元年6月10日</returns> private static string Sample1(DateTime pDate) { var jpCal = new CultureInfo("ja-JP", true) { DateTimeFormat = { Calendar = new JapaneseCalendar() } }; return pDate.ToString("gy年M月d日", jpCal); }
/// <returns>令和1年6月10日</returns> private static string Sample2(DateTime pDate) { var jpCal = new CultureInfo("ja-JP", true) { DateTimeFormat = { Calendar = new JapaneseCalendar() } }; return string.Format(jpCal, "{0:gy}年{0:M月d日}", pDate); } #endregion
== 元号表 == 「★」は複数の元号が競合する日付 「☆」は旧暦(太陰太陽暦)が使われていた日付
2019/05/01 → 「令和元年5月1日」 2019/04/30 → 「平成31年4月30日」 : 1989/01/08 → 「平成元年1月8日」 1989/01/07 → 「昭和64年1月7日」 : 1926/12/26 → 「昭和元年12月26日」 ★1926/12/25 → 「大正15年12月25日」かつ「昭和元年12月25日」 1926/12/24 → 「大正15年12月24日」 : 1912/07/31 → 「大正元年7月31日」 ★1912/07/30 → 「明治45年7月30日」かつ「大正元年7月30日」 1912/07/29 → 「明治45年7月29日」 : 1873/01/01 → 「明治6年1月1日」 …これより後はグレゴリオ暦 ☆1872/12/31 → 「明治5年12月2日」 …これより前は天保暦 ☆ : ☆1868/10/24 → 「明治元年9月9日」 ★1868/10/23 → 「慶應4年9月8日」かつ「明治元年9月8日」 …JapaneseCalendarで扱える最小日付 ★ : ★1868/01/25 → 「慶應4年1月1日」かつ「明治元年1月1日」 ☆1868/01/24 → 「慶應3年12月30日」 ☆ : ☆1865/05/02 → 「慶應元年4月8日」 ★1865/05/01 → 「元治2年4月7日」かつ「慶應元年4月7日」 ☆1865/04/30 → 「元治2年4月6日」 ☆ :
|