获取TimeZoneOffset - Java

时间:2013-01-20 13:19:46

标签: java timezone timezone-offset

我想在java中获取“TimeZoneOffset”并参考this,我实现了这个:

long unix_time_at_midnight;
DateFormat dateFormat= new SimpleDateFormat("MM/dd/yyyy");
Date d = new Date((unix_time*1000)/1000);
String d1 = dateFormat.format(d);
unix_time_at_midnight = Long.parseLong(d1);
int m=TimeZone.getOffset(unix_time_at_midnight) ;

我得到“TimeZone类型中的方法getOffset(int,int,int,int,int,int)不适用于参数(long)”。任何人都可以指导吗?

1 个答案:

答案 0 :(得分:1)

方法Timezone.getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds);是一个抽象类,必须从实现的Timezone子类引用它。

您尝试静态访问非静态方法,并且编译器将其与抽象方法匹配。

您正在寻求的解决方案是:

int m=TimeZone.getDefault().getOffset(unix_time_at_midnight) ;

编辑:在BlackBerry API上查看TimeZone,我发现没有getOffset(long date)方法,只有getOffset(int era, int year, int month, int day, int dayOfWeek, int millis)

可能的解决方案可能是:

Date d = new Date((unix_time*1000)/1000)
TimeZone tz = TimeZone.getDefault();
Calendar c = Calendar.getInstance(tz);
c.setTime(d);
int m = tz.getOffset(1, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.DAY_OF_WEEK), c.get(Calendar.MILLISECOND));