有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SimpleDataFormat。解析方法不解析所选时区

  private String target_time_zone = "Australia/Hobart";
  private String format    = "MM/dd/yyyy HH:mm:ss z";


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

        Date date = Calendar.getInstance().getTime();
        TZFormat tzFormat = new TZFormat();
        System.out.println("Converted TZ Date: "+ tzFormat.TZF(date));



  }

  public Date TZF(Date dt) throws ParseException {

        TimeZone tz = TimeZone.getTimeZone(target_time_zone);     
        SimpleDateFormat date_format_gmt = new SimpleDateFormat(format);
        date_format_gmt.setTimeZone(tz);
        SimpleDateFormat date_format_gmt1 = new SimpleDateFormat(format);
        date_format_gmt1.setTimeZone(tz);

        System.out.println("formated value: "+ date_format_gmt.format(dt));


       return date_format_gmt1.parse(date_format_gmt.format(dt));
  }

输出:

formated value: 11/15/2012 03:16:11 EST
Converted TZ Date: Wed Nov 14 21:46:11 IST 2012

实际上,我的要求是我想用格式将日期转换成目标时区,然后返回转换后的日期

 private String target_time_zone = "Australia/Hobart";
 private String format     = "MM/dd/yyyy HH:mm:ss z";

这里是TZF方法中的want Occess format date_format_gmt。format(dt)是将日期格式化为我给定的时区,当我们解析该值时,它会显示以前的值(实际时间)

如何获取具有选定时区的日期对象


共 (1) 个答案

  1. # 1 楼答案

    Date对象始终以毫秒(历元时间)表示时间,它不包含任何时区信息。当format并将其设置为字符串时,只有它以指定时区的所需格式打印