2011-10-27 108 views
0

有没有人经历过Java日历中的这种奇怪的阅读?下面的代码片断是写在Groovy(Grails中)Java日历的奇怪阅读

Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("Asia/Singapore"))  
cal.setTime(this.timeEnd) 
def endHour = cal.get(Calendar.HOUR_OF_DAY) 
def endMinute = cal.get(Calendar.MINUTE) 
println "cal gettime ${cal.getTime()} -timeend- ${this.timeEnd} end hour!!! $endHour && $endMinute" 

而且它还有我下面的结果

CAL GETTIME周四1月1 16点20分00秒GMT + 08:00 1970年-timeend- 1970-01-01 16:20:00.0结束小时!!!

,而我的日期显示16:20,检索单个字段使我15:50。 任何人有任何想法?

谢谢 罗伯特

回答

1

您的两个时区因为$ {cal.getTime()}和$ {} this.timeEnd是日期值,其格式为默认的时区。您需要SimpleDateFormat才能显示特定时区的日期。

+0

我设置日历对象的时区,因为我打印出来了,它显示了正确的时间(在我的时区),但是检索单个字段(小时和分钟)并没有给我适当的时间(如在我的时区)..早在30分钟就显示出来了..我会尝试使用SimpleDateFormat,但它似乎不太适合使用它来获取小时和分钟组件......谢谢! –

0

更改的this.timeEnd"Asia/Singapore"时区可以通过一个半小时已经放回您最初的时间

检查timeanddate.com