在Java语言中,您可以通过java.util.Calendar类取得一个本地时间或者指定时区的时间实例,如下:
取得本地时间:
java.util.Calendar cal = java.util.Calendar.getInstance();
取得指定时区的时间:
java.util.TimeZone zone = java.util.TimeZone.getTimeZone(“GMT-8:00″);
java.util.Calendar cal= java.util.Calendar.getInstance(zone);
或者:
java.util.Calendar cal = java.util.Calendar.getInstance(java.util.Locale.CHINA);
甚至您可以取得GMT 0的本地时间,但是又如何取得标准(相对于Java而言)的时间呢?
由我上一篇的有关时间与区域的文章可以得到如下的方法:
1、取得本地时间:
java.util.Calendar cal = java.util.Calendar.getInstance();
2、取得时间偏移量:
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
3、取得夏令时差:
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
4、从本地时间里扣除这些差量,即可以取得UTC时间:
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
之后,您再通过调用cal.get(int x)或cal.getTimeInMillis()方法所取得的时间即是UTC标准时间。
详细的代码如下:
packagecom.feima.afei.util;packagecom.feima.afei.util;importjava.text.DateFormat;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.TimeZone;/***
*@authorJaven
**/
public final classGetUTCTimeUtil {private static DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm") ;/*** 得到UTC时间,类型为字符串,格式为"yyyy-MM-dd HH:mm"
* 如果获取失败,返回null
*@return
*/
public staticString getUTCTimeStr() {
StringBuffer UTCTimeBuffer= newStringBuffer();//1、取得本地时间:
Calendar cal =Calendar.getInstance() ;//2、取得时间偏移量:
int zoneOffset =cal.get(java.util.Calendar.ZONE_OFFSET);//3、取得夏令时差:
int dstOffset =cal.get(java.util.Calendar.DST_OFFSET);//4、从本地时间里扣除这些差量,即可以取得UTC时间:
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset +dstOffset));int year =cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH)+1;int day =cal.get(Calendar.DAY_OF_MONTH);int hour =cal.get(Calendar.HOUR_OF_DAY);int minute =cal.get(Calendar.MINUTE);
UTCTimeBuffer.append(year).append("-").append(month).append("-").append(day) ;
UTCTimeBuffer.append(" ").append(hour).append(":").append(minute) ;try{
format.parse(UTCTimeBuffer.toString()) ;returnUTCTimeBuffer.toString() ;
}catch(ParseException e)
{
e.printStackTrace() ;
}return null;
}/*** 将UTC时间转换为东八区时间
*@paramUTCTime
*@return
*/
public staticString getLocalTimeFromUTC(String UTCTime){
java.util.Date UTCDate= null;
String localTimeStr= null;try{
UTCDate=format.parse(UTCTime);
format.setTimeZone(TimeZone.getTimeZone("GMT-8")) ;
localTimeStr=format.format(UTCDate) ;
}catch(ParseException e) {
e.printStackTrace();
}returnlocalTimeStr ;
}public static voidmain(String[] args) {
String UTCTimeStr=getUTCTimeStr() ;
System.out.println(UTCTimeStr);
System.out.println(getLocalTimeFromUTC(UTCTimeStr));
}
}