Java
1Locale.setDefault(new Locale("US")); System.out.println("[US] "); System.out.println(Locale.getDefault()); 2//Locale.setDefault(new Locale("JP")); System.out.println("[JP] "); System.out.println(Locale.getDefault()); 3 4LocalDateTime d = LocalDateTime.of(2015, 5, 10, 11, 22, 33); 5Period p = Period.ofDays(1).ofYears(2);//The static method ofYears(int) from the type Period should be accessed in a static way 6//Period p = Period.ofDays(1); p = Period.ofYears(2); 7//Period p = Period.ofDays(1); Period p2 = Period.ofYears(2); 8d = d.minus(p); 9//2013/05/09 10//d = d.minus(p).minus(p2);//Duplicate local variable p2 11//d = d.minus(p); d = d.minus(p2); //Duplicate local variable p2 12DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT); 13System.out.println(f.format(d)); 14//JP : 13/05/10 11:22 15//US : 5/10/13 11:22 AM
上記コードにおきまして、想定では Period p = Period.ofDays(1).ofYears(2);
と d = d.minus(p);
によって、Period は 2013/05/09 を指すと思われますが、実行しますと 2013年5月13日を示します。どうして5月9日を指さないのでしょうか?
また、その際、Period p = Period.ofDays(1).ofYears(2);
に、The static method ofYears(int) from the type Period should be accessed in a static way
というメッセージが表示されます。
ためしに、d = d.minus(p); d = d.minus(p2);
などとすると、Duplicate local variable p2
と出るメッセージと関連が何かあるとは思うのですが、年と日付を同時に増減させる方法はないのでしょうか?
諸氏によるご精査のほどお願いもうしあげる次第です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。