Revert removal of Joda time in OutputStreamQuery

The added test is broken; it assumes a hard coded timezone but the
timezone can vary depending on the machine that runs the tests.

This reverts commit ed962c3530d0ae666f800eab49948029e60da208.
This reverts commit 620896859a000f3647d95eba342e6c2e7354113c.

Change-Id: I3a48d9241e21c0e47e4cef98735672ae3e53d34f
diff --git a/gerrit-acceptance-tests/BUCK b/gerrit-acceptance-tests/BUCK
index d14bae2..3f7e04f 100644
--- a/gerrit-acceptance-tests/BUCK
+++ b/gerrit-acceptance-tests/BUCK
@@ -33,7 +33,6 @@
     '//lib/guice:guice',
     '//lib/guice:guice-assistedinject',
     '//lib/guice:guice-servlet',
-    '//lib/joda:joda-time',
     '//lib/log:api',
     '//lib/jgit/org.eclipse.jgit:jgit',
     '//lib/mail:mail',
diff --git a/gerrit-acceptance-tests/BUILD b/gerrit-acceptance-tests/BUILD
index 66ce1b5..71b1b45 100644
--- a/gerrit-acceptance-tests/BUILD
+++ b/gerrit-acceptance-tests/BUILD
@@ -34,7 +34,6 @@
     '//lib/guice:guice',
     '//lib/guice:guice-assistedinject',
     '//lib/guice:guice-servlet',
-    '//lib/joda:joda-time',
     '//lib/log:api',
     '//lib/jgit/org.eclipse.jgit:jgit',
     '//lib/mina:sshd',
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/ssh/QueryIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/ssh/QueryIT.java
index e80726a..2865ff87 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/ssh/QueryIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/ssh/QueryIT.java
@@ -17,11 +17,7 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assert_;
 import static com.google.gerrit.acceptance.GitUtil.initSsh;
-import static com.google.gerrit.server.query.change.OutputStreamQuery.TIMESTAMP_FORMAT;
-import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.base.CharMatcher;
-import com.google.common.base.Splitter;
 import com.google.common.collect.Lists;
 import com.google.gerrit.acceptance.AbstractDaemonTest;
 import com.google.gerrit.acceptance.NoHttpd;
@@ -31,13 +27,8 @@
 import com.google.gerrit.extensions.api.changes.ReviewInput;
 import com.google.gerrit.extensions.client.Side;
 import com.google.gerrit.server.data.ChangeAttribute;
-import com.google.gerrit.testutil.TestTimeUtil;
 import com.google.gson.Gson;
 
-import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 
 import java.util.ArrayList;
@@ -49,20 +40,6 @@
 
   private static Gson gson = new Gson();
 
-  private String systemTimeZone;
-
-  @Before
-  public void setTimeForTesting() {
-    systemTimeZone = System.setProperty("user.timezone", "US/Eastern");
-    TestTimeUtil.resetWithClockStep(1, SECONDS);
-  }
-
-  @After
-  public void resetTime() {
-    TestTimeUtil.useSystemTime();
-    System.setProperty("user.timezone", systemTimeZone);
-  }
-
   @Test
   public void testBasicQueryJSON() throws Exception {
     String changeId1 = createChange().getChangeId();
@@ -346,45 +323,6 @@
     userSession.close();
   }
 
-  @Test
-  public void testTimestampInTextQuery() throws Exception {
-    DateTimeFormatter dtf = DateTimeFormat.forPattern(TIMESTAMP_FORMAT);
-    String createdOnKey = "createdOn:";
-    PushOneCommit.Result result = createChange();
-    String textResult = executeSuccessfulTextQuery(result.getChangeId());
-    assertThat(textResult).isNotNull();
-    assertThat(textResult).contains(createdOnKey);
-    String value = getValueFromText(textResult, createdOnKey);
-    assertThat(value).isNotNull();
-    assertThat(value).isEqualTo("2009-09-30 14:00:02 PDT");
-    long expectedCreatedOn = result.getChange().change().getCreatedOn().getTime();
-    assertThat(dtf.parseMillis(value)).isEqualTo(expectedCreatedOn);
-  }
-
-  private String getValueFromText(String text, String key) {
-    Splitter s = Splitter.on(CharMatcher.is('\n')).trimResults().omitEmptyStrings();
-    for (String line : s.splitToList(text)) {
-      if (line.startsWith(key)) {
-        return line.substring(key.length()).trim();
-      }
-    }
-    return null;
-  }
-
-  private String executeSuccessfulTextQuery(String params, SshSession session)
-      throws Exception {
-    String rawResponse =
-        session.exec("gerrit query --format=TEXT " + params);
-    assert_().withFailureMessage(session.getError())
-        .that(session.hasError()).isFalse();
-    return rawResponse;
-  }
-
-  private String executeSuccessfulTextQuery(String params)
-      throws Exception {
-    return executeSuccessfulTextQuery(params, adminSshSession);
-  }
-
   private List<ChangeAttribute> executeSuccessfulQuery(String params,
       SshSession session) throws Exception {
     String rawResponse =
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/OutputStreamQuery.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/OutputStreamQuery.java
index 277a2a1..5e08ee3 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/OutputStreamQuery.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/OutputStreamQuery.java
@@ -40,6 +40,8 @@
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.util.io.DisabledOutputStream;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -49,15 +51,11 @@
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.lang.reflect.Field;
-import java.time.Instant;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -65,15 +63,11 @@
  * command.
  */
 public class OutputStreamQuery {
-  public static final String TIMESTAMP_FORMAT = "yyyy-MM-dd HH:mm:ss zzz";
-
   private static final Logger log =
       LoggerFactory.getLogger(OutputStreamQuery.class);
 
-  private static final DateTimeFormatter dtf = DateTimeFormatter
-      .ofPattern(TIMESTAMP_FORMAT)
-      .withLocale(Locale.US)
-      .withZone(ZoneId.systemDefault());
+  private static final DateTimeFormatter dtf =
+      DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss zzz");
 
   public enum OutputFormat {
     TEXT, JSON
@@ -401,7 +395,7 @@
       out.print('\n');
     } else if (value instanceof Long && isDateField(field)) {
       out.print(' ');
-      out.print(dtf.format(Instant.ofEpochMilli(((Long) value) * 1000L)));
+      out.print(dtf.print(((Long) value) * 1000L));
       out.print('\n');
     } else if (isPrimitive(value)) {
       out.print(' ');