java获取当前时区的时间

刚接触java,好多不懂的东西,今天终于获取了当前时区的时间
之前用过的一个获取时间的方法是
import java.util.Date;

public class GetTime 
{
public static void main(String[] args) 
{
Date d = new Date();
System.out.println(d);
}

}

打印出来的结果是
Wed Aug 03 15:13:28 CST 2011
一看,这个时间是对的话,也就没有管这个问题,后来再做格式化的时候,发现总是差10个小时,查看日志文件,打印时间是 Wed Aug 03 15:13:28 CST 2011,所以以为是数据库存储数据出了问题,跟踪程序之后,发现不是这个原因。原来 CST美国中部标准时间



改过之后的就可以了。
下面是正确的程序

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class DBOP 
{
public static void main(String [] arg)
{
TimeZone time = TimeZone.getTimeZone("GMT+8"); //设置为东八区
time = TimeZone.getDefault();// 这个是国际化所用的
System.out.println(time);
TimeZone.setDefault(time);// 设置时区
Calendar calendar = Calendar.getInstance();// 获取实例
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//构造格式化模板
Date date = calendar.getTime(); //获取Date对象
String str = new String();
str = format1.format(date);//对象进行格式化,获取字符串格式的输出
System.out.println(str);
}
}

输出结果为
sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
2011-08-03 03:17:47

你可能感兴趣的:(Java)