2011-03-02 5 views
1

시차를 계산하고 결과를 00:00 형식으로 표시하는 방법. 문자열 데이터를 날짜로 보내는 방법과 결과를 EditText 00:00 형식으로 표시하는 방법을 찾을 수 없습니다. 직접 해보았지만 소스가 없다는 오류가 표시됩니다. 다음은 코드입니다. 시차를 계산하고 결과를 00:00 형식으로 표시하는 방법은 무엇입니까?

public class TimeCalculate extends Activity { 

private String mBlock = null; 
private String mBlockoff = null; 
private String mBlockon = null; 

    Date date1,date2; 
    EditText block; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    EditText blockoff = (EditText) findViewById(R.id.blockoff); 
    mBlockoff = blockoff.getText().toString(); 

    EditText blockon = (EditText) findViewById(R.id.blockon); 
    mBlockon = blockon.getText().toString(); 
    block = (EditText) findViewById(R.id.block); 
    mBlock = getDifference(date1, date2); 

     date1 = new Date(mBlockoff); 
    date2 = new Date(mBlockon); 

       blockon.addTextChangedListener(new TextWatcher() { 
     public void afterTextChanged(Editable s) { 
      block = (EditText) findViewById(R.id.block); 
      mBlock = getDifference(date1, date2); 
      block.setText(mBlock); 
     } 

} 

public static String getDifference(Date startTime, Date endTime) { 
    String timeDiff; 
    if (startTime == null) 
     return "[corrupted]"; 
    Calendar startDateTime = Calendar.getInstance(); 
    startDateTime.setTime(startTime); 
    Calendar endDateTime = Calendar.getInstance(); 
    endDateTime.setTime(endTime); 
    long milliseconds1 = startDateTime.getTimeInMillis(); 
    long milliseconds2 = endDateTime.getTimeInMillis(); 
    long diff = milliseconds2 - milliseconds1; 
    long hours = diff/(60 * 60 * 1000); 
    long minutes = diff/(60 * 1000); 
    minutes = minutes - 60 * hours; 
    long seconds = diff/(1000); 

    timeDiff = hours + ":" + minutes; 
    return timeDiff; 
} 
} 

것은 내가 접근

blockon.addTextChangedListener(new TextWatcher() { 
     public void afterTextChanged(Editable s) { 
      mBlock = getDifference(date1, date2); 
      block.setText(mBlock); 
     } 

답변

10

하나가 될 수 있습니다 다음과 같은 방법이라 그런

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm"); 

    try { 
     date1 = simpleDateFormat.parse(mBlockoff); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    try { 
     date2 = simpleDateFormat.parse(mBlockon); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

SampleDateFormat

를 사용하여 내 수정 된 코드 :
가 밀리의 차이를 계산, 변환 을 초 단위로 입력 한 다음 DateUtils.elapsedTime(int sec)을 사용하여 경과 시간을 hh : mm 형식으로 지정하십시오.

DateUtils, Formatter에 대한 문서를 참조하십시오.

편집 : 예제 코드 :이 기능은

String getDifference(long now, long then){ 
     if(now > then) 
      return DateUtils.formatElapsedTime((now - then)/1000L); 
     else 
      return "error"; 
    } 
+0

나는 그것을 시도를 여전히 오류를 보여줍니다, 나는 반환 DateUtils과 같은 코드를 작성 .formatElapsedTime (초); –

+0

어떤 오류가 있었고 무엇을 시도 했습니까? 시도한 내용으로 질문을 업데이트 할 수 있습니까? – Samuh

+0

blockOn EditText 필드의 데이터 입력시 블록 EditText에서 [corrupted]를 표시합니다. SampleDateFormat도 추가했습니다. 나는 나의 코드를 다시 언급하고, plz 그것을 체크하고, 그것을위한 솔루션을 제공한다. –

2

이 코드 시도 hh:mm:ss 형식으로 시간을 반환합니다

public String timeDiff(int hourStart, int hourEnd, int minuteStart, int minuteEnd){  
     int hourDiff = 0; 
     int minDiff = 0; 
     if(hourEnd>hourStart){ 
      hourDiff = hourEnd-hourStart; 
     } 
     if(hourEnd<hourStart){ 
      hourEnd = hourEnd+12; 
      hourStart = hourStart-12; 
      hourDiff= hourEnd-hourStart; 
      } 
     if(minuteEnd>minuteStart){ 
      minDiff = minuteEnd-minuteStart; 
     } 
     if(minuteEnd<minuteStart){ 
      minuteEnd=minuteEnd+30; 
      minuteStart=minuteStart-30; 
      minDiff = minuteEnd-minuteStart; 
     } 

     return hourDiff+":"+minDiff; 
    } 
+0

코드에 주석을 추가하는 데주의해야합니까? 그것은 OP와 그것을 읽는 누군가를 위해 더 명확 할 것이다. – Yaroslav

관련 문제