如何使用 FastDateFormat 格式化 UTC 时间?
How do you format a time in UTC using FastDateFormat?
这里有一个简单的单元测试来说明我运行遇到的问题。
package mytest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import org.apache.commons.lang3.time.FastDateFormat;
import org.junit.Test;
import static org.junit.Assert.*;
public class DateTests {
private static final String DATE_VALUE = "2016-03-11T15:47:02.123Z";
private static final String PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
@Test
public void utcTest() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = sdf.parse(DATE_VALUE)
FastDateFormat fdf = FastDateFormat.getInstance(PATTERN);
assertEquals(DATE_VALUE, fdf.format(date));
}
}
我的计算机使用中部时间,这意味着当我 运行 这段代码时,断言失败,因为 fdf
将日期格式设置为上午 9 点而不是下午 3 点。我如何告诉它以 UTC 格式设置格式?
尝试这样做:
FastDateFormat fdf = FastDateFormat.getInstance(PATTERN, TimeZone.getTimeZone("UTC"));
这里有一个简单的单元测试来说明我运行遇到的问题。
package mytest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import org.apache.commons.lang3.time.FastDateFormat;
import org.junit.Test;
import static org.junit.Assert.*;
public class DateTests {
private static final String DATE_VALUE = "2016-03-11T15:47:02.123Z";
private static final String PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
@Test
public void utcTest() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = sdf.parse(DATE_VALUE)
FastDateFormat fdf = FastDateFormat.getInstance(PATTERN);
assertEquals(DATE_VALUE, fdf.format(date));
}
}
我的计算机使用中部时间,这意味着当我 运行 这段代码时,断言失败,因为 fdf
将日期格式设置为上午 9 点而不是下午 3 点。我如何告诉它以 UTC 格式设置格式?
尝试这样做:
FastDateFormat fdf = FastDateFormat.getInstance(PATTERN, TimeZone.getTimeZone("UTC"));