2017-07-01 12 views
0

実際の時と分をこの "18:00"のような文字列と比較しようとしています。時間の比較(文字列と時間と実際の時間)

Calendar now = Calendar.getInstance(); 

int hour = now.get(Calendar.HOUR); 
int minute = now.get(Calendar.MINUTE); 

date = parseDate(hour + ":" + minute); 

私は、この "午前18時00分"(TAG_HORA)のような文字列を持っていると私はこのように2つの日付を比較しようとしています:私はこのような実際の時間と分を取得し

dateCompareOne = parseDate(c.getString(TAG_HORA)); 
if ((dateCompareOne.after(date))){//... 

I結果を得ることはできません、誰かが私を助けることができますか?ありがとう

+0

あなたがより良い比較、日付から時間と分を抽出しなければならないしTAG_HORAから時間と分を抽出したものです。偽の日付を作るよりもきれいです。 –

+0

私に例を挙げてもらえますか?ありがとう –

+0

後(..)はブール値を返します。 "after"を呼び出した後、何が起こるのですか?結果が得られない場合は例外が発生します – efekctive

答えて

1

歌う使用して比較するより:

import java.util.Calendar; 
import java.lang.Math; // headers MUST be above the first class 
import javax.xml.bind.DatatypeConverter; 
import static javax.xml.bind.DatatypeConverter.parseDate; 

// one class needs to have a main() method 
public class test 
{ 
    // arguments are passed using the text field below this editor 
    public static void main(String[] args) 
    { 

    Calendar now = Calendar.getInstance(); 
    int hour = now.get(Calendar.HOUR); 
    int minute = now.get(Calendar.MINUTE); 

    Calendar date1 = Calendar.getInstance(); 
    date1.set(Calendar.HOUR_OF_DAY, date1.getTime().getHours()); 
    date1.set(Calendar.MINUTE, date1.getTime().getMinutes()); 
    date1.set(Calendar.SECOND, 0); 

    String reference = "18:00"; 
    String[] parts = reference.split(":"); 
    Calendar date2 = Calendar.getInstance(); 
    date2.set(Calendar.HOUR_OF_DAY, Integer.parseInt(parts[0])); 
    date2.set(Calendar.MINUTE, Integer.parseInt(parts[1])); 
    date2.set(Calendar.SECOND, 0); 

    if (date1.before(date2)) { 
     System.out.println(date1.getTime()+" vs "+date2.getTime()); 
     System.out.println("Not yet at the limit"); 
    } 

    } 
} 

はEDIT:出力は次のとおりです。

Sat Jul 01 16:05:00 GMT+01:00 2017 vs Sat Jul 01 18:00:00 GMT+01:00 2017 
Not yet at the limit 
1

TAG_HORAからString.split()Integer.valueOf()で時間と分を抽出することができます。それで、時間を比較するのは簡単です。

Calendar now = new GregorianCalendar(); 
int nowHour = now.get(Calendar.HOUR); 
int nowMin = now.get(Calendar.MINUTE); 


String hora = "18:00"; 
String[] parts = hora.split(":"); 

int horaHour = Integer.valueOf(parts[0]); 
int horaMinute = Integer.valueOf(parts[1]); 

if(60 * nowHour + nowMin > 60 * horaHour + horaMinute) { 

} 
1

2番目とあなたが流れるよう行うことができますミリ秒程度の心をdon'y場合:

Calendar now = Calendar.getInstance(); 
now.set(Calendar.SECOND, 0); 
now.set(Calendar.MILLISECOND, 0); 
now.getTimeInMillis(); 

は値が鍵タグֹ_HORAに渡し解析。 と<> =は、私はこれが役立つことを願っ