質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

7回答

4292閲覧

年号不明の和暦6桁を西暦8桁に変換する

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/05/21 05:10

編集2020/05/21 05:23

前提・実現したいこと

和暦から西暦に変換する方法を教えてください。


和暦6桁(gymmdd):321231 →  西暦8桁(yyyymmdd):19571231

上記の様に年号不明の値の変換処理は実装可能でしょうか?
言語はC#です。
DBに年号カラムはあるものの、区分値がどの年号を
さすのか分からず、確認できていないまま製造に入っております。

不可能なのでは?と思うのですが、何かやりようがあれば
お知恵を貸していただけると幸いです。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Wind

2020/05/21 05:20

まずは年号カラムの区分値を識別しないと不可能では無いでしょうか? 和暦の最初が01だった時、どの年号か不明なまま動いても、後で混乱するだけです。
退会済みユーザー

退会済みユーザー

2020/05/21 05:20

ASP.NET のタグがついてますがどういう関係があるのか書いてください。 元は DB から取得しているのですか? であれば、DB は何でその型はなにかを書いてください。
YAmaGNZ

2020/05/21 05:25

「DBに年号カラムはあるものの、区分値がどの年号をさすのか分からず」 ということは現在作成しているものは、完全な新規作成ではなく、前システムのリプレース等なのではないのですか? そうなると、なんらか人が目に出来る出力がありそこで年号が表現されているのではないでしょうか。
退会済みユーザー

退会済みユーザー

2020/05/21 05:28

申し訳ありません。和暦もDBから取得してきます。年号に関しても同じテーブルから取得しております。 また、タグについては開発環境に関連するものと追加いたしました。 混乱されているようでしたら申し訳ありません。 やはり年号が不明の場合は変換不可能でしょうか。。。
退会済みユーザー

退会済みユーザー

2020/05/21 05:36

質問に答えられませんか? そもそも、あなたが言う DB とは何なのかも分かりません。 ASP.NET は質問内容とは関係ないのですね。削除お願いします。
退会済みユーザー

退会済みユーザー

2020/05/21 05:41 編集

年号カラムがあるのであれば、それを特定するしかないでしょう。 年号不定のまま進めるのであれば、間違いなく地獄を見ると思われます。 もし既にあるシステムのリプレースであれば、画面表示や帳票類も今のデータから出力してるということですよね?年号違うデータで全部出力して確認してみてはいかがでしょう。
guest

回答7

0

先ずはデータの分布を取る事ですね。

各元号での年の最大から、年だけで特定できるものもあります。
元号一覧 (日本)

DBに年号カラムはあるものの、区分値がどの年号をさすのか分からず、確認できていないまま製造に入っております。

区分ごとの年の最大を取るだけでもかなり判別できると思いますけど。

重なっている部分については判断が必要になりますので、データ的にあり得ないもの(例えば大正以前は存在しないとか)があれば条件は不要ですし、対象以外のデータ項目で判断するとか、データ個別に対処していくしかないでしょう。

投稿2020/05/21 05:26

編集2020/05/21 05:37
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/21 05:33

ありがとうございます。 回答ただいたヒントをもとにもう少し詳しく状況判断していきます。
guest

0

DBに年号カラムはあるものの、区分値がどの年号を
さすのか分からず、確認できていないまま製造に入っております。

区分値がどの年号をさすのか分かる人に確認しましょう。

投稿2020/05/21 05:26

編集2020/05/21 05:27
hillacken

総合スコア359

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/05/21 05:28

誰ですか?
退会済みユーザー

退会済みユーザー

2020/05/21 05:33

確認しましたが、分からないとの返答だったので困っておりました。 回答ありがとうございます
hillacken

2020/05/21 07:13

現に目の前にデータがあるなら誰かしら知ってるでしょうと思います。 とりあえず江戸とか平安とか仮で設定して進めたら?
guest

0

ベストアンサー

年号が不明の場合は判定不可能

明治は45年、大正は15年、平成は31年
データを解析して年号区分を判断

投稿2020/05/21 05:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/05/21 05:46

これ、質問する前にわかりませんでしたか?
退会済みユーザー

退会済みユーザー

2020/05/21 06:23

初投稿から退会まで 29 分。最短記録?
guest

0

この和暦での年月日が入っているレコードの別のカラムに、「元号区分」を示すカラムがあるのでしょうか?

そして何らかの表示マスタのような形で、「元号区分が○○のとき、元号は□□」と読み解くことができるレコードなり定数定義がありませんか?

それがあれば、何とかなるかと思います。
もっとももしそれがなければ、およそまともな運用が可能なシステムとは思えませんが。
※平成になってから作ったので平成と令和しか元号区分がない、とかはありそうですが

投稿2020/05/21 05:35

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一般論だと誰に聞くまでもなく無理に決まっています。

昭和32年~平成31年までのデータしか無いとかであれば、可能ですね。
あるいは、平成20年~令和19年とか。
これも、誰に聞くまでも無いことだと思います。

もちろん、連続データなら、推定可能ですね。
631231 → これは昭和
011231 → 平成
・・・
301231
011231 → 令和
・・・・
など。

あるいは、業務的なデータと突き合わせることで、一意に確定できるとか。
「平成2年には○○本部は無かったので、これは令和2年に違いない」とか。

投稿2020/05/21 05:29

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/21 05:32

なるほど、やはりそうですよね。。。 大変助かりました。ありがとうございます。
guest

0

年号不明の値の変換処理は実装可能でしょうか?

ほかにヒントはありませんか?

(たとえば、「レコードが年代順に入っている」あるいは「リレーション先から年月日情報が得られる」など)

そうでなければ判定不能です。

投稿2020/05/21 05:22

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/05/21 05:25 編集

> 区分値がどの年号をさすのか分からず 「63年」などがあるデータに結びついているのが昭和です。そっちを特定するのが正解かと思います。
退会済みユーザー

退会済みユーザー

2020/05/21 05:30

初めて利用するもので質問の書方が非常に悪く申し訳ありません。 和暦はDBから取得されます。データに関してもソートされておらず、年月日情報がわかるのはプログラムの処理日のみです。 やはり判定不能でしょうか。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2020/05/21 05:31

DBにデータが入っておらず、年号に関して紐づく手がかりがない状況です。
maisumakun

2020/05/21 05:35 編集

「区分値と年月日の組み合わせ」がDBに入っているわけですよね? それを突き合わせれば、46年以上が入っている区分値は昭和と決まります(明治は45年、大正は15年、平成は31年までしかありません)。
退会済みユーザー

退会済みユーザー

2020/05/21 05:37

ありがとうございます。ヒントをもとに詳しく紐解いていきます。
guest

0

質問が編集され、区分があることがわかりましたが、それならなぜこのような質問をするのか意味が分かりません。
区分が何を指すのか調査する以外にないと思います。
データを詳細に見ることのできる人しか調査はできません。
自分の手に余るなら応援を頼みましょう。

投稿2020/05/21 05:13

編集2020/05/21 05:36
Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/21 05:16

申し訳ありません。質問の仕方が悪かったです。 データとして年号不明の和暦6桁の文字列が渡ってきたときに、西暦8桁に変換されるような処理を追加する必要があるのですが、なにか方法はないか質問いたしました。
Zuishin

2020/05/21 05:16

歴史的資料など、特殊な事情があったのでない限り、明治以前ということはないと思います。
Zuishin

2020/05/21 05:17

それは何の日付ですか?
YAmaGNZ

2020/05/21 05:19

例に挙げられている32だけで考えても明治は否定できないと思いますが
Zuishin

2020/05/21 05:20

32 だけならそうですね。しかし西暦なら 70 と書いてあれば 1870 年ではなく 1970 年と推定できます。
退会済みユーザー

退会済みユーザー

2020/05/21 05:21

現在あるシステムを製造しているのですが、西暦に変換する処理を加えたく質問のために例として挙げた日付です。なので、値としては様々な日付が渡ってきます。年号不明の場合でも西暦8桁(yyyymmdd)への変換は可能でしょうか?個別の質問を投げてしまい申し訳ありません。
Zuishin

2020/05/21 05:22 編集

元号不明であれば変換などできるわけがありませんが、内容を考えれば元号は推定できると思います。いったい何のシステムで、何の日付ですか?
maisumakun

2020/05/21 05:24

いまは分が悪いですね。「2年」が「平成2年」か「令和2年」か、どちらも出現頻度がそれなりにある値です。
Zuishin

2020/05/21 05:26

そこまでごちゃ混ぜにしているのであればどうにもなりませんが、さすがに人並みの知能を持った人が運用していたものだと信じたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問