简体   繁体   中英

Grails TimeZone issue, application wise and in Gorm entiteis

Okay, I've the strangest problem that I've just started to experience in a grails application working just fine for 2 months.

Application is deployed on Linux/Tomcat 6 and MySQL is the DBMS at back end.

When I type date on linux prompt, I get following output:

$>date Sun Aug 8 03:52:06 PKT 2010

Where as in Grails application new Date() returns me a date 5 hours behind the current system date. Time Zone being shown in application is GMT. This wasn't the case initially. Anyways I did set the TimeZone default to GMT+5 in bootstrap and redeployed the application, hoping things will get fixed.

Now new Date() got resolved however a new issue was visible. For all Domain classes having Date fields mapped to some database tables with corresponding properties Date only. I am getting a date in GUI like this: 2010-08-08 05:00:00

Notice the 05 hours added to the date field automatically, in database the value in field is Date only there's no time information and I actually don't need the time information at all, it should be 00:00:00 as it was previously before this issue popped up.

Strange isn't it. Please help me, as I'm lost already, tried so many things and nothing found as a solution. It's a pity when a flawless application after two months start producing such bugs.

Please help, anticipating positive and quick responses.

Regards, Alam Sher

My first question is that if you don't care about the time, why are you displaying it in the UI?

It looks like Grails is assuming that the database is using GMT and is adding 5 to the date. What timezone is your database set to? The application and the database should probably be in sync.

If you want the time to show on the UI and always be zero, you could zero out the time using the clearTime() method on Groovy's enhanced java.util.Date class. See here: http://groovy.codehaus.org/groovy-jdk/java/util/Date.html

As a note, I usually use Calendar to create a date by passing in a timezone:

def date = Calendar.getInstance(TimeZone.getTimeZone("CST")).time

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM