发布日期时间,减少一天

时间:2014-03-12 09:45:14

标签: java

下面的代码返回的时间比我通过的少一天,为什么它会少一天返回" 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"));

3 个答案:

答案 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打印...