我必须说,使用时区是我的克星!
在我的数据库(PostGres)中,我有一个类型为“没有时间的时间戳”区域的字段。
我保存在其中的值是 UTC 时间。
我想要做的是根据我机器的默认时区显示值。
因此,当我从数据库中检索值时,我首先必须“说”这是一个 UTC 时间,因此我将其时区设置为 UTC:
private Date lastUpdateToUTC( Date myDate)
{
if ( myDate!= null )
{
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
dateFormat.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
System.out.println("orig: " + dateFormat.format(myDate));
try
{
Date convertedDate = dateFormat.parse( dateFormat.format( myDate) );
dateFormat.setTimeZone( TimeZone.getDefault( ) );
System.out.println("converted: " + dateFormat.format(convertedDate));
return dateFormat.parse( dateFormat.format( convertedDate ) );
....
假设 myDate 是 2013-08-05 10:44:08。
我期待的是第一个输出是 2013-08-05 10:44:08 和第二个 2013-08-05 12:44:08。
相反,我得到 2013-08-05 08:44:08 和 2013-08-05 10:44:08 ......
我的推理错误在哪里?我应该怎么做才能得到我所期望的?