2012-04-29 18 views
2

我使用currentTimeMillis();获取开始时间,然后再次使用它来获得结束时间。然后,我使用删除从结束开始,并获得一个值,这是两者之间的持续时间。我使用SimpleDateFormat来使所有这些值漂亮和可读。唯一的是当我使用一个像10秒(或300等)的低值而不是全长的长号码(例如1335718053126),我似乎会在01:00:10或01:02:12等我的输出?事实上,如果我只是要求SimpleDateFormat输出hh:mm:ss值为0值,它将读取01:00:00。Android:SimpleDateFormat不断添加1小时到我的时间

任何人都知道这是为什么?

如果其他人需要时间格式化的解决方案,找到这个整洁的小代码。 Source link

public String getNiceTime(long time) {  

    String format = String.format("%%0%dd", 2); 
    String seconds = String.format(format, time % 60); 
    String minutes = String.format(format, (time % 3600)/60); 
    String hours = String.format(format, time/3600); 
    String outPutTime = hours + ":" + minutes + ":" + seconds; 
    return outPutTime; 
} 
+1

您使用日期,而不是时间格式。可能与夏季时间有关吗? – Heinrisch

+0

我认为你是对的,你知道我可以如何改变这个时区吗?或者我可以使用简单的时间格式吗? – Purplemonkey

+0

我不知道输出正确时间的好方法,您可能需要自己计算小时:分钟:秒。 – Heinrisch

回答

2
mySimpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 

说明:你可能生活在一个GMT + 1时区,除非您指定一个不同的,格式化程序会选择你目前的一个,所以它认为0小时为GMT和您在格林威治标准时间+1,它输出1小时