###前提・実現したいこと
タイトル通りですが年齢から計算して求められないかと考えております。(2000年生まれか、1900年台生まれか。)
手元にあるデータ
○年齢(文字列 3桁 前0埋め 025(25歳))
○生年月日(形式 yyMMdd 和暦の年のみ。元号情報なし。900101(1990年01月01日))
上記の情報から生年月日をyyyy/MM/ddの形式に変換したいのですが、年の頭二桁を求めるときに困っております。
###発生している問題・エラーメッセージ
下記のコードでは仕様漏れがあり、不正な生年月日に変換される。
###該当のソースコード
'パターン① '下記では西暦の頭部分の19 or 20の判定が甘い。実行日が2016年かつ対象が17歳の場合等。 Console.WriteLine(Date.Now.AddYears(-CInt(info.年齢)).Year.ToString.Substring(0, 2) & Trim(info.生年月日).Substring(0, 2) & "/" & info.生年月日.Substring(2, 2) & "/" & info.生年月日.Substring(4, 2)) 'パターン② '/の挿入方法が違うのは気にしないでください。 '生年月日(yyMMdd)に無理やり"/"を挿入しyy/MM/ddにし、Date.Parseで取得する方法。これでは100歳の方が対象の場合問題がある。 'DateParseでは2000年代ではありえない、(80年代や90年代)の場合は1900年台を返すが、1916年のような方の場合自動的に現代である2000年にて結果を返してくる。(おそらく仕様。) Console.WriteLine(Date.Parse(info.生年月日.Insert(2, "/").Insert(5, "/")).Year.ToString.Substring(0, 2) & info.生年月日.Substring(0, 2) & "/" & info.生年月日.Substring(2, 2) & "/" & info.生年月日.Substring(4, 2))
###詳細
年齢から生年月日の上二桁を取得するのが目的です。(19 or 20)
下二桁のみでの判断では限界があり、(例~20/01/01 の場合1920 or 2020のパターンが考えられる為。)
下二桁と年齢から正しく算出できないでしょうか。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/30 06:14