有没有人在Java日历中遇到如此奇怪的阅读?以下代码段是用Groovy编写的(在Grails中)
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 Thu Jan 01 16:20:00 GMT + 08:00 1970 -timeend- 1970-01-01 16:20 :00.0结束时间!!! 15&& 50
当我的日期显示为16:20时,检索单个字段会给我15:50。 任何人都有任何想法?
谢谢你, 罗伯特
答案 0 :(得分:1)
因为$ {cal.getTime()}和$ {this.timeEnd}是日期值,并且格式化为默认时区。您需要SimpleDateFormat才能显示特定TimeZone的日期。
答案 1 :(得分:0)
将this.timeEnd
的时区更改为"Asia/Singapore"
可能会将您的初始时间缩短半小时。