C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■91273 / 4階層)  XMLファイルから一致するデータを取得する方法
□投稿者/ 魔界の仮面弁士 (2200回)-(2019/06/10(Mon) 11:12:20)
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日」
☆  :
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[3]: XMLファイルから一致するデータを取得する方法 /shu →Re[5]: XMLファイルから一致するデータを取得する方法 /河童
 
上記関連ツリー

XMLファイルから一致するデータを取得する方法 / 河童 (19/06/09(Sun) 10:49) #91261
Re[1]: XMLファイルから一致するデータを取得する方法 / Hongliang (19/06/09(Sun) 11:13) #91262
  └ Re[2]: XMLファイルから一致するデータを取得する方法 / 河童 (19/06/09(Sun) 23:05) #91267
    └ Re[3]: XMLファイルから一致するデータを取得する方法 / shu (19/06/10(Mon) 07:43) #91269
      ├ Re[4]: XMLファイルから一致するデータを取得する方法 / 河童 (19/06/10(Mon) 10:00) #91270
      │└ Re[5]: XMLファイルから一致するデータを取得する方法 / とっちゃん (19/06/10(Mon) 10:29) #91271
      └ XMLファイルから一致するデータを取得する方法 / 魔界の仮面弁士 (19/06/10(Mon) 11:12) #91273 ←Now
        └ Re[5]: XMLファイルから一致するデータを取得する方法 / 河童 (19/06/11(Tue) 17:14) #91283 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信