将时区应用于Date对象

时间:2012-12-03 18:32:12

标签: java android

    Date now = new Date();
    Date then = new Date((long)obj.timestamp*1000);

    TimeZone tz = TimeZone.getDefault();

不熟悉java,但有没有办法将时区应用于Date对象?我发现this线程,但这是关于日历时区,我相信这是不同的?

3 个答案:

答案 0 :(得分:3)

Date对象默认使用当前时区。如果您尝试按特定时区打印时间,可以使用SimpleDateFormat,如下所示:

   //put the desired format      
   DateFormat formatter= new SimpleDateFormat("MM/dd/yyyy hh:mm:ss Z");
   //set the desired timezone
   formatter.setTimeZone(TimeZone.getTimeZone("Europe/London"));

   String formattedNowInTimeZone  = formatter.format(now);
   String formattedThenInTimeZone  = formatter.format(then);

答案 1 :(得分:2)

使用SimpleDateFormat.setTimeZone(TimeZone)设置TimeZone。

    SimpleDateFormat sdf = new SimpleDateFormat("yourformat");   
    TimeZone tz = TimeZone.getDefault(); 
    sdf.setTimeZone(tz);
    sdf.format(yourdate); //will return a string rep of a date with the included format

答案 2 :(得分:2)

Date个对象没有时区,它只是特定时刻的容器。如果您要为其应用时区,则必须使用Calendar。我这样做如下

Calendar cal = Calendar.getInstance();
cal.setTime( date );

如果您只想显示针对某个时区调整的Date,那么您可以使用SimpleDateFormat来应用适当的时区调整。