5

请建议一种在 EST 中打印日期的方法。

public Date convertToEST(Date date)
{
     // some code here
}

如果我在 IST 中传入一个日期,该方法应该在 EST 中返回该日期。

4

5 回答 5

5

你需要以下

Date date = new Date();  

DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");

// Set the formatter to use a different timezone  
formatter.setTimeZone(TimeZone.getTimeZone("EST"));  

// Prints the date in the EST timezone  
System.out.println(formatter.format(date));  

要将方法返回一个Date对象,您需要如下所示

public static Date convertToEST(Date date) throws ParseException {
    DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
    formatter.setTimeZone(TimeZone.getTimeZone("EST"));
    return formatter.parse((formatter.format(date)));
}

Javadoc- DateFormat.format,DateFormat.parse

于 2012-12-25T12:03:33.140 回答
4

“该方法应在 EST 中返回该日期”的想法是错误的。自 1970 年 1 月 1 日格林威治标准时间 00:00:00 以来,日期只是毫秒的持有者。它与时区无关。

于 2012-12-25T11:50:20.850 回答
4
于 2018-02-13T17:56:19.357 回答
2

在java中更改时区

public class TimeZoneSample {
    public static void main(String[] args) throws ParseException {

        // I am in IST time Zone (Its ID is Asia/Calcutta or ITS)
        System.out.println(TimeZone.getDefault());
        // I get Indian Time printed
        System.out.println(new Date());
        System.out.println("-------------------");
        // I am setting the time zone to China
        TimeZone.setDefault(TimeZone.getTimeZone("CTT"));
        // Now my default time zone is in China
        System.out.println(TimeZone.getDefault());
        // I get Chian Time printed
        System.out.println(new Date());
        System.out.println("-------------------");
        // I am setting the time zone to EST
        TimeZone.setDefault(TimeZone.getTimeZone("EST"));
        // Now my default time zone is in EST
        System.out.println(TimeZone.getDefault());
        // I get Eastern Time printed
        System.out.println(new Date());

    }

}

控制台输出

sun.util.calendar.ZoneInfo[id="Asia/Calcutta",offset=19800000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null]
Wed Dec 26 10:22:25 IST 2012
-------------------
sun.util.calendar.ZoneInfo[id="CTT",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
Wed Dec 26 12:52:25 CST 2012
-------------------
sun.util.calendar.ZoneInfo[id="EST",offset=-18000000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
Tue Dec 25 23:52:25 EST 2012
于 2012-12-26T04:53:50.400 回答
1
DateFormat requiredDateFormat = new SimpleDateFormat("hh:mm a zzz, EEE MMMM dd,yyyy");
requiredDateFormat.setTimeZone(TimeZone.getTimeZone("US/Eastern"));
String date = requiredDateFormat.format(new Date());
System.out.println(date);

控制台输出:美国东部标准时间上午 06:25,2018 年 2 月 13 日星期二

于 2018-02-13T11:28:42.127 回答