有 Java 编程相关的问题?

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

在Java中从静态成员调用非静态方法

这个问题相当复杂,我不知道以前是否有人问过,因为我不知道如何在搜索框中表达这个问题

以下是代码:

public class SomeClass 
{
  private static final DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

  public static String toUTCDateString(Date date)
  {
    df.setTimeZone(java.util.TimeZone.getTimeZone("UTC"));
    return df.format(date);
  }

  /* more static methods */
}

静态成员df将在更静态的方法中再次使用,但我需要先将其时区设置为“UTC”。有没有办法一劳永逸地调用.setTimeZone("UTC")?或者我必须在每个静态方法中调用.setTimeZone("UTC")


共 (1) 个答案

  1. # 1 楼答案

    不幸的是!SimpleDataFormat不是trread安全的:它保持内部状态,并在发生大破坏的同时使用

    这“解决”了您的问题,因为您必须更改API

    public static DateFormat df()
    {
        DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        df.setTimeZone(java.util.TimeZone.getTimeZone("UTC"));
        return df;
    }
    

    在使用其他更好的类的Java8中,这个问题得到了解决

    顺便说一下,yyyy-MM-dd是ISO标准