专家们, 我想获取给定时区的当前日期时间以供全局使用。
所以, 我创建了一个如下所示的类,但它显示 df.setTimeZone 语句的语法错误。实现这一目标的巧妙方法是什么?更具体地说,我想为类成员而不是局部变量设置时区属性。
我通过SimpleDateFormat定义了多种日期格式,如何为它们指定时区? (.setTimeZone 似乎仅适用于一种日期格式)谢谢。
public class Global {
static SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setTimeZone(TimeZone.getTimeZone("GIVEN_TIMEZONE"));
static String strDate = df.format(new Date());
}
最佳答案
如果您绝对必须使用static
字段执行此操作,则需要将代码放在static
初始化程序 block 中:
class Global {
static SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
static {
df.setTimeZone(TimeZone.getTimeZone("GIVEN_TIMEZONE"));
}
static String strDate = df.format(new Date());
}
<小时/>
更新
如果您有很多日期需要这样做,并且具有不同的日期格式和/或时区,那么最好使用辅助方法。
class Global {
static String strDate = format(new Date(), "dd/MM/yyyy", "GIVEN_TIMEZONE");
private static String format(Date date, String format, String timeZoneID) {
SimpleDateFormat df = new SimpleDateFormat(format);
df.setTimeZone(TimeZone.getTimeZone(timeZoneID));
return df.format(date);
}
}
关于java - 如何为类成员使用 .setTimeZone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38407735/