好的,我刚刚开始在grails应用程序中遇到的最奇怪的问题就是工作2个月。
应用程序部署在Linux / Tomcat 6上,MySQL是后端的DBMS。
当我在linux提示符下输入日期时,我得到以下输出:
$>日期 Sun Aug 8 03:52:06 PKT 2010
在Grails应用程序中,new Date()返回当前系统日期后5小时的日期。应用程序中显示的时区是GMT。最初并非如此。无论如何,我确实在引导程序中将TimeZone默认设置为GMT + 5并重新部署应用程序,希望事情能够得到修复。
现在新的Date()已经解决,但是可以看到新问题。对于所有具有Date字段的Domain类,映射到具有相应属性的某些数据库表仅限日期。我在GUI中得到这样的日期: 2010-08-08 05:00:00
注意05小时自动添加到日期字段,在数据库中字段中的值是日期只有没有时间信息而我实际上根本不需要时间信息,它应该是00:00:00,因为它之前就出现了这个问题。
奇怪的不是它。请帮助我,因为我已经失去了,尝试了很多东西,没有找到任何解决方案。两个月后完美无缺的应用开始产生这样的错误,真是太遗憾了。
请帮助,期待积极和快速的回应。
此致 Alam Sher
答案 0 :(得分:0)
我的第一个问题是,如果您不关心时间,为什么要在UI中显示它?
看起来Grails假设数据库正在使用GMT并且正在向日期添加5。您的数据库设置为什么时区?应用程序和数据库可能应该同步。
如果您希望在UI上显示时间并且始终为零,则可以使用Groovy的增强型java.util.Date类上的clearTime()方法将时间清零。见这里:http://groovy.codehaus.org/groovy-jdk/java/util/Date.html
作为一个注释,我通常使用日历通过传入时区来创建日期:
def date = Calendar.getInstance(TimeZone.getTimeZone(“CST”))。time