- ベストアンサー
時間の比較
String型の変数 a ~f があるとします。 a = 時間1 b = 分1 c = 秒1 (a時b分c秒) d = 時間2 e = 分2 f = 秒2 (d時e分f秒) これら2つを比較して時間の早いほうを見つけようとしていますがなかなかうまくできません。 Dateクラス、Calenderクラス、TimeStampクラスいろいろ使って見たんですが・・ 何かいいアイディアありませんか? やはり一つ一つ時間同士、分同士比較していくのが一番手っ取り早いのでしょうか? いいメソッドなどあれば教えてください。 よろしくお願いいたします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
訂正です。 1.2000年はうるう年でした。(400で割れるので) 2.for(i=1;i<m;i++)はfor(i=0;i<m;i++)
その他の回答 (6)
- fortranxp
- ベストアンサー率26% (181/684)
>そのストリング型の変数を1970年1月1日からのミリ秒で出す出し方はわかりませんか? 1.そのキモは現在までの日数を計算するのであれば たとえば現在が2005年12月31日だったら 正味35年ですがうるう年があるので 365日X35+9-1(2000年はうるう年でない。)です。 2.2006年m月d日の日数は mによって一ヶ月に日数がことなるので予め String str="312831303130313130313031" int DD; for(i=1;i<m;i++){ DD=DD+Integer.parseInt(str.SubString(i,i+2)) +Integer.parseInt(d); } あまりjavaはやっていないので一部おかしいかもしれませんがこんな感じでいけそうな気がするのですが。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>1970年1月1日からのミリ秒で 時分秒しかないのに、意味がないのでは 0時からの秒ならわかるけど
お礼
ありがとうございます。 日付は別のところで用意してあるんです。
- gimmick
- ベストアンサー率49% (134/270)
>そのストリング型の変数を1970年1月1日からのミリ秒で出す出し方はわかりませんか? GregorianCalendarクラスのインスタンスを GregorianCalendar(int year, int month, int date, int hour, int minute, int second) で作成して、getTimeInMillis()メソッドを使う。
- fortranxp
- ベストアンサー率26% (181/684)
x1=Integer.parseInt(a)*3600+Integer.parseInt(b)*60+Integer.parseInt(c) x2=Integer.parseInt(d)*3600+Integer.parseInt(e)*60+Integer.parseInt(f) で単純に比較したほうが解り易いです。
お礼
ありがとうございます。 ぜひ使わせていただきます。 追加質問なのですが そのストリング型の変数を1970年1月1日からのミリ秒で出す出し方はわかりませんか?
- gimmick
- ベストアンサー率49% (134/270)
それぞれの時、分、秒を結合した文字列をString#compareTo(String anotherString)で比較すればよいのではないですか? (ただし、時、分、秒が1桁になる可能性がある場合は、0を付けて2桁化しておく必要があります。) もちろん、 >やはり一つ一つ時間同士、分同士比較していく でも構いません。
お礼
ありがとうございます。 追加質問なのですが そのストリング型の変数を1970年1月1日からのミリ秒で出す出し方はわかりませんか?
- cocomonchi
- ベストアンサー率23% (29/123)
abcを結合したのとdefをしたのを比較すればよいのでは?
補足
それを1970年1月1日からのミリ秒で出す出し方はわかりませんか?
お礼
ありがとうございます! おかげさまで問題解決しました。