2014-11-10 5 views
4

저는이 코드를 사용하여 TimePicker에 현재 시간을 보여 줍니다. 그러나 정확히 모르겠는데 왜 올바르게 표시되지 않습니까? 예를 들어 시간 (시스템 시간)은 2:56 PM이지만 2:56 AM입니다. 내가 어떻게 해결할 수 있니? 감사. 내가 아래에이 방법으로 문자열의 형태로이 시간을 변환 할 때안드로이드의 TimePicker에서 현재 시간을 보여줍니다.

private long timer1 = 0; 
... 

switch (view.getId()) { 
     case R.id.add1: { 
      if (timer1 == 0) { 
       timer1 = getCurrentTime(); 
      } 
      Calendar calendar = Calendar.getInstance(); 
      calendar.setTimeInMillis(timer1); 

      TimePicker timePicker = (TimePicker) findViewById(R.id.tp_1); 
      timePicker.setCurrentHour(calendar.get(Calendar.HOUR)); 
      timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); 



      break; 
     . ..    
     } 

private long getCurrentTime() { 
    Calendar calendar = GregorianCalendar.getInstance(); 
    return calendar.getTimeInMillis(); 
} 

는 또한 내가 같은 문제가 있습니다 :

private String convertTimeToString(long time) { 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(time); 

    int hour = calendar.get(Calendar.HOUR_OF_DAY); 
    //int hour = get; 
    int minute = calendar.get(Calendar.MINUTE); 

    String timeSet; 
    if (hour > 12) { 
     hour -= 12; 
     timeSet = "PM"; 
    } else if (hour == 0) { 
     hour += 12; 
     timeSet = "AM"; 
    } else if (hour == 12) { 
     timeSet = "PM"; 
    } else { 
     timeSet = "AM"; 
    } 

    String minutes; 
    if (minute < 10) { 
     minutes = "0" + minute; 
    } else { 
     minutes = String.valueOf(minute); 
    } 
    // Append in a StringBuilder 
    return String.format("%s:%s %s", hour, minutes, timeSet); 

} 

저를 도와주세요!

timePicker.setCurrentHour(calendar.get(Calendar.HOUR)); 

하려면 :

hourStart = c.get(Calendar.HOUR_OF_DAY); 
+0

내 대답을 확인하십시오. 시간 = c.get (Calendar.HOUR_OF_DAY); –

+0

HOUR 시간 필드 대신 HOUR_OF_DAY를 설정하십시오. –

답변

3

업데이트
1) 잘못된 시간 문제 :

+0

고마워,하지만 시간이 문자열 형식으로 변환 할 때 또 다른 문제가 있습니다. 내가 지금 시간을 설명합니다 –

+0

업데이트 된 게시물을 참조하십시오 – sberezin

+0

덕분에, 그것을 작동! –

2
// display current time 
    public void setCurrentTimeOnView() { 

     tvDisplayTime = (TextView) findViewById(R.id.tvTime); 
     timePicker1 = (TimePicker) findViewById(R.id.timePicker1); 

     final Calendar c = Calendar.getInstance(); 
     hour = c.get(Calendar.HOUR_OF_DAY); 
     minute = c.get(Calendar.MINUTE); 

     // set current time into textview 
     tvDisplayTime.setText(
        new StringBuilder().append(pad(hour)) 
             .append(":").append(pad(minute))); 

     // set current time into timepicker 
     timePicker1.setCurrentHour(hour); 
     timePicker1.setCurrentMinute(minute); 

    } 
+0

감사하지만,이 메소드의 출력은이 proje의 다른 부분에서 필요하기 때문에 String이어야합니다. 제발 어떻게 도와 드릴까요? –

+0

이 게시물의 마지막 답변을 찾으려고합니다. http://stackoverflow.com/questions/3992820/android-how-to-get-the-time-from-a-timepicker-when-it-is-typed-in –

+0

this : return String.format ("% s : % s % s", Integer.toString (hour), minutes, timeSet); –

2

이 줄을 교체 같은 코드를 편집하려고 :

2) 문자열 표현의 문제 :

String format = "hh:mm"; // or any other format - see note below 
SimpleDateFormat formatter = new SimpleDateFormat(format); 
formatter.format(yourDate); 

을하거나 long 타임 스탬프를 사용하면 마지막 줄은 다음과 같습니다 : 문자열로 날짜/시간을 변환하는 일반적인 방법은 다음됩니다

formatter.format(new Date(yourLongTimestamp)); 

유용한 링크 :
볼 수있는 다른 날짜/시간 형식 기호 here.
테스트 할 수있는 다른 형식 패턴 here.

+0

고마워,하지만 시간이 문자열 형식으로 변환하려면 다른 문제가 있습니다. 나는 지금 그것을 설명한다. –

+0

감사합니다, 그것은 작동합니다 –

+0

@ user3671748 대답을 받아 upvote하시기 바랍니다. 그래서 다른 사람들은이 혜택을 누릴 수 있습니다. –

관련 문제