转换UTC时间T0本地时间在Java或Groovy中

maa*_*aaz 5 java grails groovy

我需要存储createdOn(域类中的一个属性).我正在获取系统时间并存储此属性的值.我的时区是(GMT + 5:30钦奈,加尔各答,孟买,新德里)当我上传到服务器时它存储UTC时间.我希望它是IST(印度标准时间)我的应用程序在Grails上使用Groovy.请帮我调整UTC/IST时差.提前致谢

pax*_*blo 23

不,不要那样做.永远!

如果您以当地形式存储时间,那么您将陷入痛苦的世界.您基本上必须存储本地时间和本地时区,然后显示时间变成一个复杂的野兽(计算源和目标时区).

所有时间都应存储为UTC.没有例外.在写入任何地方(尽快)之前,用户输入的时间应转换为UTC.

要向用户显示的时间应尽可能晚地从UTC转换为本地.

从曾经陷入多时区泥潭的人那里得到这个建议.仅在必要时使用UTC和转换将使您的生活更轻松.


一旦你有UTC时间,就可以使用SimpleDateFormat该类来转换它了:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class scratch {
    public static void main (String args[]) {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone (TimeZone.getTimeZone ("IST"));
        System.out.println ("Time in IST is " + sdf.format (now));
    }
}
Run Code Online (Sandbox Code Playgroud)

这输出:

Time in IST is 2011-04-11 13:40:04
Run Code Online (Sandbox Code Playgroud)

这与我在Mirzapur的当前时间一致,我认为这是IST的基础(不是因为它只有一个时区而在印度很重要).