2016-03-28 21 views
0

我有毫秒的时间,我想把它转换成小时,分钟和秒钟。我已经试过这段代码,但我不知何故不会获得最新的时间。例如: 我设定了时间3:50但是得到了7:50。为什么会发生?为什么我设定时间但变得不同?

这是我如何设置,获取和显示时间:

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute()); 
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour()); 
long alarm3 = calendar.getTimeInMillis(); 
     long alarm4 = (alarm3/(1000*60*60))%24; 
     long alarm5 = (alarm3/(1000*60))%60; 
     long alarm6 = (alarm3/1000)%60; 
Log.i("Alarm1","Hours:" + Long.toString(alarm4)); 
     Log.i("Alarm1","Minutes:" + Long.toString(alarm5)); 
     Log.i("Alarm1","Seconds:" + Long.toString(alarm6)); 
+0

您是使用上下箭头设定时间还是编辑文本本身? –

+0

@ muhammed-refaat如果你的意思是我使用哪个视图,那么我使用一个时间选择器。如果没有,那么请解释你的问题 –

+0

我知道你使用的是TimePicker,我问你如何使用它来设置时间?因为TimePicker可以用两种方式使用,第一种使用(plus/mines)按钮,第二种使用android键盘,所以如果你通过android键盘使用它,这可能是你的问题,然后我会解释为什么。 –

回答

1

虽然答案以上只会让它工作,你可能仍然想知道为什么你的解决方案没有。这很可能是因为时区偏移。当你得到日历的实例时:

Calendar calendar = Calendar.getInstance(); 

它继承了你的语言环境,所以你的时区也是如此。 然后,假设您应用的timePicker工作在同一个时区,您将分针和时针consistenly:

calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute()); 
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour()); 

,但最后这个特别的方法返回一个UTC时间:

long alarm3 = calendar.getTimeInMillis(); 

所以我猜你的TZ抵消是4小时。

+0

所以这不会影响我的应用程序的工作? –

+0

它不应该 - 触发警报的时间与应用程序的偏移量相同,所以它只是显示有趣(UTC)时间的日志。 – ptrk

+0

您认为我可以在磨坊使用时间设定警报吗? –

1

您可以使用SimpleDateFormat

public static String getOnlyTimeFromMillis(long millis) { 
    SimpleDateFormat apiFormat = new SimpleDateFormat("HH:mm:ss"); 
    Date date = new Date(millis); 
    return apiFormat.format(date); 
} 
0

使用此功能

public static String getTimeFromMilliseconds(long milliseconds) { 

     return (new SimpleDateFormat("HH:mm:ss")).format(new Date(milliseconds)); 
    } 
相关问题