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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

7044閲覧

元号を追加すると2年から始まってしまう

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

4クリップ

投稿2017/07/05 12:32

Javaで新元号を追加(Calendar.propertiesをいじっています。)をして和暦表示をすると、
2年から始まってしまいます。

java

1 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); 2 SimpleDateFormat wareki = new SimpleDateFormat("GGGGy/M/d",new Locale("ja","JP","JP")); 3 SimpleDateFormat wareki2 = new SimpleDateFormat("Gy/M/d",new Locale("ja","JP","JP")); 4 5 Date date = sdf.parse("20180101"); 6 //date.getTime()で取得した値をCalendar.propertiesに指定。 7 System.out.println(wareki.format(date));//新元号2/1/1 8 9 Date date2 = wareki2.parse("K1/1/1");//元号省略形は「K」にしている。 10 System.out.println(wareki.format(date2));//平成29/1/1 11 12

Calendar.propertiesには20180101のエポックタイムを指定しています。
(2018年から元号が変わるようにしたい)

以下のようなことも試してみましたが、挙動がよくわかりません。

java

1 Date date3 = sdf.parse("20170101"); 2 System.out.println(wareki.format(date3));//平成29/1/1 3 4 Date date4 = wareki.parse("新年号1/1/1");//20170101 5 System.out.println(sdf.format(date4));

なにかわかることがございましたら、ご教示お願いいたします。

A-pZ👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

昨夜友人と調べてわかったので、シェアしますね。
calendars.propertiesに定義する時間のlong値は、GMT です。

つまり日本時間(JST)で2018/1/1 は、GMTで2018/01/01 09:00:00のlong値を設定するのが正しく、例えば以下のようになります。

calendar.japanese.eras: \ name=Meiji,abbr=M,since=-3218832000000; \ name=Taisho,abbr=T,since=-1812153600000; \ name=Showa,abbr=S,since=-1357603200000; \ name=Heisei,abbr=H,since=600220800000; \ name=Capybara,abbr=C,since=1514764800000

タイムゾーンの指定方法については以下を参考にすると、良いかもしれません。

http://javatechnology.net/java/timezone/

投稿2017/07/06 01:25

A-pZ

総合スコア12011

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

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

退会済みユーザー

退会済みユーザー

2017/07/06 11:04

ありがとうございます。ご指摘の通りCalendar.propertiesを修正したところ、期待する結果となりました! GMTとJSTまでは考慮していなかったので、勉強になりました。 ありがとうございました!
A-pZ

2017/07/06 15:00

今回わたしも検証してみて、なるほどなーと思った次第です。こちらこそありがとうございました。
guest

0

Javaで新元号に対応する という記事は読まれましたか?

Calendar.propertiesをどのように変更したのかというところに問題があると思われますので、修正したCalendar.propertiesを質問に追加すると適切な回答が得られると思います。

投稿2017/07/06 00:39

coco_bauer

総合スコア6915

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

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

退会済みユーザー

退会済みユーザー

2017/07/06 11:05

リンクまでご提示していただきありがとうございます。 質問の仕方や調べ方ももう少し見直そうと思います。 ご回答いただきありがとうございました。
guest

0

新年号が2017年から始まっているように見えます。
Calendar.propertiesの設定を見直してみてください。

投稿2017/07/05 12:48

maiko0318

総合スコア876

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

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

退会済みユーザー

退会済みユーザー

2017/07/06 11:06

回答いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問