ある年月から、その前月(月の開始日)を取得する方法を教えて下さい。
例えば、「2003年7月」の前月は、「2003年6月」ですが、
その月の開始日「2003年6月1日」を取得する方法を教えて下さい。
「2003年7月」を表すDate型オブジェクトを引数にして、
「2003年6月1日」を取得したいです。
言語はJavaです。
よろしくお願いします。

A 回答 (2件)

奇遇ですね。


私もちょうどそういう処理をやったんですよ。
最適な方法かわかりませんが、

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateTest {

public static void main(String[] args) {
System.out.println(getDate().toString());
}

public static Date getDate(){
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(new Date());
cal.set(2003,cal.get(Calendar.MONTH)-1,cal.getActualMinimum(Calendar.DATE));
return cal.getTime();
}
}
    • good
    • 0

ちょっと正確な回答になっていないと思いますが、


適当に修正すればご希望の処理ができると思います。
    • good
    • 0

このQ&Aと関連する良く見られている質問

Q英語の月表示について

英語では月表示がそれぞれありますが、例えば日本では9月の6カ月前といえば3月というようにすぐ出てきますよね。
英語ではどう数えますか?
また、9.11テロはアメリカではなんと呼ぶのですか?
英語でも数字に置き換えるのでしょうか。

Aベストアンサー

興味深い質問だと思いネイティブスピーカーに聞いてみました。
すると、月表示を一度数字に置き換えて計算してるという答えでした。

とはいえ、それは人によると思います。
日本人だって、木曜日の3日前は?と聞かれれば
水、火、月と数えて辿る人もいれば、パッと月曜日と直ぐに答えが出る人もいると思います。(例えとして適切かどうかは微妙ですが、、、^^;)

QJavaで年月の取得(YYYYMM形式で)

Javaで“前月”の年月(YYYYMM形式)を取得するロジックを組んだのですが、
以下のコードを実行すると、前月の月が1桁の場合に、「YYYYM」(5桁)の形式になってしまいます。
(元がintなので当然かも知れませんが。)

Calendar calendar = Calendar.getInstance();
String yearMonth =
String.valueOf(calendar.get(Calendar.YEAR)) + String.valueOf(calendar.get(Calendar.MONTH) - 2);

こちら、解決する方法はありますでしょうか?
※他に気掛かりな点としては、2012年の1月に実行した時に、正しく「201112」を返してくれるか、というのもあります。

また、別の実装方法として、以下の場合は「YYYYMM形式」で取得出来るのですが、
“前月”に変換する方法が分かりませんでした。。。

Calendar calendar = Calendar.getInstance();
String yearMonth2 =
new SimpleDateFormat("yyyyMM").format(calendar.getTime());


ロジックはシンプルである方が助かります。
分かる方、教えて下さい!

Javaで“前月”の年月(YYYYMM形式)を取得するロジックを組んだのですが、
以下のコードを実行すると、前月の月が1桁の場合に、「YYYYM」(5桁)の形式になってしまいます。
(元がintなので当然かも知れませんが。)

Calendar calendar = Calendar.getInstance();
String yearMonth =
String.valueOf(calendar.get(Calendar.YEAR)) + String.valueOf(calendar.get(Calendar.MONTH) - 2);

こちら、解決する方法はありますでしょうか?
※他に気掛かりな点としては、2012年の1月に実行した時に、正しく「201112」を返して...続きを読む

Aベストアンサー

Calendar calendar = Calendar.getInstance();
calendar.add( Calendar.MONTH, -1 );
String lastMonth = new SimpleDateFormat( "yyyyMM" ).format( calendar.getTime() );

Javaの開発をするなら、Javadoc くらい読めるようになりましょうね。

Q英語の省略について。

英語の省略について。
 英語の授業で、「be busy (in)Ving のinは省略されて分詞に見えるけど、動名詞なんだぞ。」といわれたのですが、このような英語の省略ってよく聞くんですけど、この場合なんで省略できるんですか?

Aベストアンサー

 「busy in ...ing」や「spend in ...ing」は、1900年代前半までは実際に使われていた用法です。

 Mrs Joe was prodigiously busy in getting the house ready for the festivals of the day. (Dickens)

 I have spent my life in finding that out. (Galsworthy)

 そもそも「in」という前置詞の後で用いられていたわけですから、その当時は当然「動名詞」と考えられていたはずです。その意味では、先生の言われていることは全くの的外れでもないでしょう。

 確かに「動名詞」と「現在分詞」は区別が難しいのですが、英英辞典で「gerund」を調べると「a noun in the form of the present participle of a verb」とされていますので、native speakerにもそれなりの違いは認識されているのだと思われます。

 ただし、現代においては「in」が用いられることはほとんどなくなっていますので「in」を用いた場合には非常に古臭い印象を与えます。例えば、日本語で「私は忙しゅうございました。」という表現は理解できないわけではありませんが、わざわざそのような言い方をする人はほとんどいないでしょう。それと似た感じではないでしょうか。

 なお、今では「go ...ing」で定着している表現も、もとをたどれば「go for ...ing」の「for」が取れた形だと言われています。

 ご参考になれば・・・。

 「busy in ...ing」や「spend in ...ing」は、1900年代前半までは実際に使われていた用法です。

 Mrs Joe was prodigiously busy in getting the house ready for the festivals of the day. (Dickens)

 I have spent my life in finding that out. (Galsworthy)

 そもそも「in」という前置詞の後で用いられていたわけですから、その当時は当然「動名詞」と考えられていたはずです。その意味では、先生の言われていることは全くの的外れでもないでしょう。

 確かに「動名詞」と「現在分詞」は区別が...続きを読む

Qyyyymmddからyyyy/mm/ddへの変換

いつもお世話になっております。
Aと言う変数にはyyyymmddの値が入っていて
Aをyyyy/mm/ddにしてBの変数に入れたい場合の処理がわかりません。
調べたところ、SimpleDateFormatクラスと言うものを使えばよいと言うことが判明しました。
しかし、今まで使ったことがないのでよくわかりません。
変数Aと変数BはどちらもString型です。
ご教授お願い致します。

Aベストアンサー

 こんにちは。

 本当に変数aの中の文字列が厳密にyyyyMMddの形式のなっているのなら、普通に

String b = a.substring(0, 4) + "/" + a.substring(4, 6) + "/" + a.substring(6, 8);

 これでいいと思いますが、いったんDate型にする必要があったり、ちゃんと日付として認識できるか確かめる必要がある場合は、

String a = "20051029";

SimpleDateFormat formatter = (SimpleDateFormat)DateFormat.getDateInstance();
formatter.applyPattern("yyyyMMdd");
try {
  Date date = formatter.parse(a);
  formatter.applyPattern("yyyy/MM/dd");
  String b = formatter.format(date);
  System.out.println(b);
}
catch (ParseException ex) {
  System.out.println("解析失敗");
}

 こんな感じでいいんじゃないでしょうか。

 こんにちは。

 本当に変数aの中の文字列が厳密にyyyyMMddの形式のなっているのなら、普通に

String b = a.substring(0, 4) + "/" + a.substring(4, 6) + "/" + a.substring(6, 8);

 これでいいと思いますが、いったんDate型にする必要があったり、ちゃんと日付として認識できるか確かめる必要がある場合は、

String a = "20051029";

SimpleDateFormat formatter = (SimpleDateFormat)DateFormat.getDateInstance();
formatter.applyPattern("yyyyMMdd");
try {
  Date date = formatter.p...続きを読む

Q惑星直列 2009年2月14日

2月14に惑星が直列すると人から聞いたのですが、
どの惑星が直列するのでしょうか?

Aベストアンサー

こちらで確認してみてください。
http://www.heavens-above.com/planets.aspx?lat=35.700&lng=139.767&loc=Tokyo&alt=20&tz=JapST
#並んでいるようには見えないですが・・・

QString型の日付(2005/11/25)の比較

Java初心者です。String型で2005/11/25 のように2つString型で日付を取得したときに、大小の比較をしたいのです。どういう方法が考えられますか?よろしくお願いします。

Aベストアンサー

書式がyyyy/mm/ddで決め打ちならば他の方が書かれているとおりString#compareTo()で充分でしょう。
yyyy/m/dなど書式が不定の場合には、java.text.DateFormatを利用してjava.util.Dateに変換して比較するか、/で文字列を分解し、年・月・日を抽出してそれぞれを比較するなどが考えられます。

Q月の和名の中で、師走が特に知られているのはなぜですか。

月の和名の中で、師走が特に知られているのはなぜですか。
月の和名「睦月、如月、弥生、卯月、皐月、水無月、文月、葉月、長月、神無月、霜月、師走」の中で、「師走」が特に知られているのはなぜですか。
12の和名全て知っている人は多くないと思いますが、「師走」だけは皆が知っているのはなぜですか。

Aベストアンサー

単純に、一年で一番月日の流れを感じやすい時期「年の瀬=師走」ということでしょうかね?
あるいは、師走だけは「月」が付かないので、他と混同しないということもあるのでしょうか。
命名が分かりやすいですし。

二番目に知られているのは、きっと「五月晴れ」の皐月ではないかと私には思われます。
だとすると要は、耳にするか?しないか?の違いかもしれませんね。

反対に、如月、卯月、霜月とか、(水無月を除いて)1ヶ月が31日まで無い月は忘れやすい気がしますね。私は。

Qequalsの逆

javaで、文字列の場合は比較演算子の「==」は用いずに

if ((str1.getText()).equals(str2)){
(※…str1,2は文字列)

と書きますよね?
この逆で、文字列str1とstr2は等しくないとき、にはif以下の条件文をどのように書けばよいでしょうか?

Aベストアンサー

>if !((str1.getText()).equals(str2)){

あくまで
if(){
}


!(str1.getText()).equals(str2)
が入っているので
if !((str1.getText()).equals(str2)){
じゃなくて
if (!(str1.getText()).equals(str2)){
こう。

Q篠笛とフルート

最近、篠笛を吹いてみたいと思うようになりました。
私は高校の吹奏楽部でフルートをやっていたのですが、
やはり篠笛とフルートは全く違うものなのでしょうか?
篠笛には篠笛の吹き方がありますが、例えば息の入れ方など、
フルートの経験を生かせる、ということはないのでしょうか…?
篠笛はただ趣味としてやりたいだけなので、独習で吹こうと思っています。
ただ篠笛とフルートの違いについて知りたいと思い、質問させていただきました。
どんなことでも構いませんので、ぜひよろしくお願いします。

Aベストアンサー

こんにちは。
私は長い事、フルートをやってるのですが、その為に、とあるコーラスにいた時、獅子舞をやるのに篠笛をやらされました。

とりあえず出来るには出来ましたが、どうしても音がフルートっぽい音になってしまうんです。

これはフルートの奏法をそのまま篠笛でやってるからだと思います。

一番極端に違うのは楽器の持ち方、構え方です。
持ち方はフルートに比べて極端に歌口を手前に回し、構え方は、フルートで言う足部管側を持ち上げて構え、抑え方は、指の第一関節と第二関節の間で抑えます。

そして一番やっかいなのは、フルートでは禁止されている奏法が、普通にできなければいけない事です。
私はこれが結局出来ませんでした。
ユリ、メリ、カリ、というやつなんですが、メリは顎を引いて息を穴の中心方向にずらす、カリは反対、ユリは、顎を前後に揺らして息の当て方でかけるビブラートです。
フルートのお腹でかけるビブラートとは全く表現が違うので、これをフルート式で代用するとモロにフルートになっちゃいます。

あんまりみんなが「それは篠笛じゃない!」っていじめるので、篠笛で白鳥の踊りをやったら、獅子の人がつま先立ちでマント?を翻して踊り出しました。
他にもガボット、アルルの女などが出来ます。(爆)

こんにちは。
私は長い事、フルートをやってるのですが、その為に、とあるコーラスにいた時、獅子舞をやるのに篠笛をやらされました。

とりあえず出来るには出来ましたが、どうしても音がフルートっぽい音になってしまうんです。

これはフルートの奏法をそのまま篠笛でやってるからだと思います。

一番極端に違うのは楽器の持ち方、構え方です。
持ち方はフルートに比べて極端に歌口を手前に回し、構え方は、フルートで言う足部管側を持ち上げて構え、抑え方は、指の第一関節と第二関節の間で抑えます...続きを読む

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング