下面的代码返回的时间比我通过的少一天,为什么它会少一天返回" Fri Aug 27 13:00:00 PDT 2010"。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.TimeZone;
Locale locale = new Locale("en", "US");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", locale);
TimeZone timeZone = TimeZone.getTimeZone("Etc/GMT-4");
dateFormat.setTimeZone(timeZone);
System.out.println(dateFormat.parse("2010-08-28"));
答案 0 :(得分:4)
输出奇怪的原因是您的系统时区。
例如,在我的系统上,我使用UTC+2
并打印代码
Fri Aug 27 23:00:00 BST 2010
如果我将系统时区更改为UTC
我
Fri Aug 27 21:00:00 BST 2010
在输出中产生两个小时的差异。
因此,似乎正在发生的事情是00:00, 28 Aug 2010
中的UTC-4
日期计算到系统设置中指定的时区,然后在终端中打印。
答案 1 :(得分:1)
输出取决于系统的时区。您正在解析的内容基本上是2010-08-28 00:00:00,时区GMT-4。当您打印它时,它会在您系统的时区显示此时间。
答案 2 :(得分:0)
查看Fri Aug 27 13:00:00 PDT 2010
的时间?这是PDT的13:00,所以我建议您使用具有目标时区的专用SimpleDateFormat
打印...