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

わんくま同盟

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

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

■91261 / 親階層)  XMLファイルから一致するデータを取得する方法
□投稿者/ 河童 (54回)-(2019/06/09(Sun) 10:49:47)

分類:[.NET 全般] 

いつも大変お世話になっております。

西暦から和暦に変換したいと思っています。

和暦はXMLファイルからテーブルを読み込んで
変換する和暦の略称を取得します。
変換の形式は「R1.6月」です。

わからないことは、
変換する日付と和暦のデータをどのように一致させるかです。
令和の終了日はまだわからないので、
開始日と終了日の間というのはできなかったです。

現状は、XMLファイルの最後のデータを取得していますが、
平成や昭和に変換したいときができたときは、
やはり開始日と終了日の間にないといけないと思います。

任意の日付で和暦の略称を取得するには、
どのように処理をすればよいでしょうか?

よろしくお願いします。


和暦のXMLファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<wareki>
  <data>
    <era_name>Heisei</era_name>
    <era_ryaku>H</era_ryaku>
    <era_start>19890108</era_start>
    <era_end>20190430</era_end>
  </data>
  <data>
    <era_name>Reiwa</era_name>
    <era_ryaku>R</era_ryaku>
    <era_start>20190501</era_start>
    <era_end></era_end>
  </data>
</wareki>


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;

namespace ERA
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            DateTime dt = DateTime.Now;
            string era = getChangeEra(dt);

        }

        #region 西暦から和暦に変換する
        //************************************************
        // 和暦の形式(R1.5月)
        // 変換できない場合は空白とする
        //************************************************
        private static string getChangeEra(DateTime pDate)
        {

            string EraName;

            try
            {
                string wdate = pDate.ToString();

                // XML ロード
                var table = XDocument.Load(@"C:\era.xml").Element("wareki");

                string era_name = "";
                string era_ryaku = "";
                string era_start = "";
                string era_end = "";

                foreach (var row in table.Elements("data"))
                {
                    era_name = row.Element("era_name").Value;
                    era_ryaku = row.Element("era_ryaku").Value;
                    era_start = row.Element("era_start").Value;
                    era_end = row.Element("era_end").Value;
                }

                // 西暦から和暦の年を取得
                int era_year = pDate.Year - int.Parse(era_start.Substring(0, 4)) + 1;

                string era_month = pDate.Month.ToString();

                // 和暦へ変換
                EraName = era_ryaku + era_year.ToString() + "." + era_month + "月";

            }
            catch (FormatException)
            {
                EraName = "";
            }

            return EraName;

        }
        #endregion
         
    }
}

編集キー/

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

XMLファイルから一致するデータを取得する方法 / 河童 (19/06/09(Sun) 10:49) #91261 ←Now
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
      └ Re[4]: XMLファイルから一致するデータを取得する方法 / 魔界の仮面弁士 (19/06/10(Mon) 11:12) #91273
        └ Re[5]: XMLファイルから一致するデータを取得する方法 / 河童 (19/06/11(Tue) 17:14) #91283 解決済み

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