No.3ベストアンサー
- 回答日時:
xinmanです。
稚拙なコードですがこんなクラスでいかがでしょうか?
import java.util.*;
public class Wareki {
/*明治*/
private static final int I_MEIJI= 1868;
private static final int I_MEIJI_M= 9;
private static final int I_MEIJI_D= 8;
/*大正*/
private static final int I_TAISHOU= 1912;
private static final int I_TAISHOU_M= 7;
private static final int I_TAISHOU_D= 30;
/*昭和*/
private static final int I_SHOUWA= 1926;
private static final int I_SHOUWA_M= 12;
private static final int I_SHOUWA_D= 25;
/*平成*/
private static final int I_HEISEI= 1989;
private static final int I_HEISEI_M= 1;
private static final int I_HEISEI_D= 8;
private String strGengou = null;
private Date date = null;
/*コンストラクタ*/
/*int iY西暦年*/
/*int iM月*/
/*int iD日*/
public Wareki(int iY,int iM,int iD){
setSeireki(iY,iM,iD);
}
/*コンストラクタ*/
/*int strG和暦元号*/
/*int iY和暦年*/
/*int iM月*/
/*int iD日*/
public Wareki(String strG,int iY,int iM,int iD){
setWareki(strG,iY,iM,iD);
}
/*西暦設定*/
/*int iY西暦年*/
/*int iM月*/
/*int iD日*/
public void setSeireki(int iY,int iM,int iD) {
strGengou = new String("明治以前");
if((iY>I_MEIJI)||(iY==I_MEIJI&&iM>I_MEIJI_M)||(iY==I_MEIJI&&iM==I_MEIJI_M&&iD>=I_MEIJI_D)){
strGengou = new String("明治");
}
if((iY>I_TAISHOU)||(iY==I_TAISHOU&&iM>I_TAISHOU_M)||(iY==I_TAISHOU&&iM==I_TAISHOU_M&&iD>=I_TAISHOU_D)){
strGengou = new String("大正");
}
if((iY>I_SHOUWA)||(iY==I_SHOUWA&&iM>I_SHOUWA_M)||(iY==I_SHOUWA&&iM==I_SHOUWA_M&&iD>=I_SHOUWA_D)){
strGengou = new String("昭和");
}
if((iY>I_HEISEI)||(iY==I_HEISEI&&iM>I_HEISEI_M)||(iY==I_HEISEI&&iM==I_HEISEI_M&&iD>=I_HEISEI_D)){
strGengou = new String("平成");
}
this.date = new Date(iY-1900,iM-1,iD);
}
/*和暦設定*/
/*int strG和暦元号*/
/*int iY和暦年*/
/*int iM月*/
/*int iD日*/
public void setWareki(String strG,int iY,int iM,int iD) {
if(strG.equals("明治")){
iY = iY + I_MEIJI - 1;
}else if(strG.equals("大正")){
iY = iY + I_TAISHOU - 1;
}else if(strG.equals("昭和")){
iY = iY + I_SHOUWA - 1;
}else if(strG.equals("平成")){
iY = iY + I_HEISEI - 1;
}
strGengou = new String("明治以前");
if((iY>I_MEIJI)||(iY==I_MEIJI&&iM>I_MEIJI_M)||(iY==I_MEIJI&&iM==I_MEIJI_M&&iD>=I_MEIJI_D)){
strGengou = new String("明治");
}
if((iY>I_TAISHOU)||(iY==I_TAISHOU&&iM>I_TAISHOU_M)||(iY==I_TAISHOU&&iM==I_TAISHOU_M&&iD>=I_TAISHOU_D)){
strGengou = new String("大正");
}
if((iY>I_SHOUWA)||(iY==I_SHOUWA&&iM>I_SHOUWA_M)||(iY==I_SHOUWA&&iM==I_SHOUWA_M&&iD>=I_SHOUWA_D)){
strGengou = new String("昭和");
}
if((iY>I_HEISEI)||(iY==I_HEISEI&&iM>I_HEISEI_M)||(iY==I_HEISEI&&iM==I_HEISEI_M&&iD>=I_HEISEI_D)){
strGengou = new String("平成");
}
this.date = new Date(iY-1900,iM-1,iD);
}
/*和暦元号取得*/
public String getStrGengou(){
return strGengou;
}
/*和暦年取得*/
public int getIWarekiYear(){
int iY = this.date.getYear() + 1900;
if(getStrGengou().equals("明治")){
iY = iY - I_MEIJI + 1;
}else if(getStrGengou().equals("大正")){
iY = iY - I_TAISHOU + 1;
}else if(getStrGengou().equals("昭和")){
iY = iY - I_SHOUWA + 1;
}else if(getStrGengou().equals("平成")){
iY = iY - I_HEISEI + 1;
}
return iY;
}
/*西暦年取得*/
public int getISeirekiYear(){
return this.date.getYear() + 1900;
}
/*月取得*/
public int getIMonth(){
return this.date.getMonth() + 1;
}
/*日取得*/
public int getIDate(){
return this.date.getDate();
}
}
こ、こんなすてきなソースがいただけるとは。。。
非常に感激です!!!
ほんとうにもうみなみなさまのおかげです。
どうもありがとうございました。
No.2
- 回答日時:
Javaに西暦と和暦を変換するクラスは今のところ実装されていません。
必要であれば、
1868年9月8日から1912年7月29日までをと明治する
1912年7月30日から1926年12月24日までをと大正する
1926年12月25日から1989年1月7日までをと昭和する
1989年1月8日から平成する
というロジック自分で用意しなけれなりません。
”DateFormat”クラスはalfeimさんの回答に加えて英語表記で”AD”となるところを日本語表記で”西暦”と表記してくれる機能がありますが和暦への対応はしてません。
なるほど、
やはりクラスはなく自分でロジックを
組まなければいけないんですね。。。
今まで、考えたことがなかったんですが、
>1868年9月8日から1912年7月29日までをと明治する
>1912年7月30日から1926年12月24日までをと大正する
>1926年12月25日から1989年1月7日までをと昭和する
>1989年1月8日から平成する
そういうロジックを入れなければいけないんですね!
でも、それはどういったロジックになるのでしょうか。。。?
もし、差し支えなければ教えてください。
とにかくどうもありがとうございました。
No.1
- 回答日時:
自分で実装しないと無いんじゃないでしょうか?
多分DateFormatはYYYY/MM/DDをDD/MM/YYにしたりするようなものだと思いますけど・・・
作るとしても昭和64年をどう処理するか?とか平成元年は1月7日からなのか?とか色々問題があると思いますが・・・
ありがとうございます。
やはりそういうものなんですね。
>作るとしても昭和64年をどう処理するか?とか平成元年は1月7日からなのか?とか>色々問題があると思いますが・・・
そこまで考えていなかったんで
これから考えてみます。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 戸籍・住民票・身分証明書 運転免許証の更新期日って何でわざわざ元号(令和)表紙なんでしょうか? 特に元号が変わった時前の元号が 3 2023/05/04 12:45
- 人類学・考古学 今の世の中は西暦をよく使いますが、西暦を数え始めたのはイエス・キリストの生まれた頃からずっと数え続け 2 2023/06/18 15:49
- その他(暮らし・生活・行事) 年を和暦で言われたとき瞬時に西暦に変換する方法ってありますか? 履歴書などを書く際にすごくめんどくさ 2 2022/07/25 01:01
- 日本語 「2025年」のことを何と言いますか? 「2025年」=「西暦年」ではないので西暦年のひとつですか? 6 2022/05/07 16:18
- Excel(エクセル) EXCEL 和暦を西暦に変換する方法について 4 2023/03/02 20:57
- 歴史学 中国の元号 1 2022/06/05 22:54
- Excel(エクセル) Excelで、昭和の西暦換算 6 2023/03/23 11:29
- ノンジャンルトーク 日常生活で、元号って面倒くさいなぁーと思ったことがありますか? 2 2022/04/11 18:51
- C言語・C++・C# C言語のwhileを使ってプログラムを組みたいです!自分でやってみたのですが答えが合わないので教えて 3 2022/06/30 18:08
- その他(悩み相談・人生相談) 国家試験 生年月日記載ミスに関して 2 2023/02/18 00:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でfirefoxのウインドウを移動...
-
C++からC#のdllを参照する際、...
-
javaでcsvファイル読込時の改行...
-
identifierについて教えて下さい
-
6桁の数字を重複なしでランダム...
-
java streamでenum配列への変換
-
デスクトップのアイコンの位置...
-
【C#】フォームをなめらかに移動
-
JAVA エラー 式の開始が不正で...
-
Randomクラスを使い同じ値をも...
-
C#経過時間の求め方
-
式の型は配列型で int に解決済...
-
因数分解メソッドの改良
-
java spring でエラーが出て困...
-
JAVAのプログラムソースコード
-
Javaでポインタ的なことはでき...
-
byte[2] から int へ。
-
C#で実行時にメソッドの返り値...
-
フィボナッチ数列 java
-
画像が表示されません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
Javaで電卓を作りたい
-
式の型は配列型で int に解決済...
-
javaでカレンダー作成
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
java spring でエラーが出て困...
-
6桁の数字を重複なしでランダム...
-
c# デリゲート関連の命名について
-
C++からC#のdllを参照する際、...
-
メインが含まれていません
-
(Swing)JTextFieldを半角のみ入...
-
DataSet(DataTable)の使い方
-
JUnit4のアノテーションについて
-
三目並べ(Tick-Tack-Toe)をJav...
-
初心者ですが、今javaで簡単な...
-
javaでcsvファイル読込時の改行...
-
classを使って座標軸を求めるコ...
-
C#で実行時にメソッドの返り値...
-
Java 初心者 int型の取り扱い方
おすすめ情報