Java获得指定时区时间

简介: 在Java语言中,您可以通过java.util.Calendar类取得一个本地时间或者指定时区的时间实例,如下:// 取得本地时间:Calendar cal = Calendar.

在Java语言中,您可以通过java.util.Calendar类取得一个本地时间或者指定时区的时间实例,如下:

// 取得本地时间:
Calendar cal = Calendar.getInstance();
//取得指定时区的时间:      
TimeZone zone = TimeZone.getTimeZone(“GMT-8:00″);
Calendar cal = Calendar.getInstance(zone);


或者:


Calendar cal = Calendar.getInstance(Locale.CHINA);

写几个实例:

/**
* 获得东八区时间
*
* @return
*/
public static String getChinaTime() {
TimeZone timeZone = TimeZone.getTimeZone("GMT+8:00");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(timeZone);
return simpleDateFormat.format(new Date());
}


还有一种方式是先取得UTC时间,然后再转换为东八区时间

/**
* 得到UTC时间,类型为字符串,格式为"yyyy-MM-dd HH:mm"
* 如果获取失败,返回null
*
* @return
*/
public static String getUTCTimeStr() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

StringBuffer UTCTimeBuffer = new StringBuffer();
// 1、取得本地时间:
Calendar cal = Calendar.getInstance();
// 2、取得时间偏移量:
int zoneOffset = cal.get(Calendar.ZONE_OFFSET);
// 3、取得夏令时差:
int dstOffset = cal.get(Calendar.DST_OFFSET);
// 4、从本地时间里扣除这些差量,即可以取得UTC时间:
cal.add(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);
int second = cal.get(Calendar.SECOND);
UTCTimeBuffer.append(year).append("-").append(month).append("-").append(day);
UTCTimeBuffer.append(" ").append(hour).append(":").append(minute).append(":").append(second );
try {
format.parse(UTCTimeBuffer.toString());
return UTCTimeBuffer.toString();
} catch (ParseException e) {
e.printStackTrace();
}

return null;
}
/**
* 将UTC时间转换为东八区时间
* @param UTCTime
* @return
*/
public static String getLocalTimeFromUTC(String UTCTime){
Date UTCDate;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String localTimeStr = null ;
try {
UTCDate = format.parse(UTCTime);
format.setTimeZone(TimeZone.getTimeZone("GMT-8")) ;
localTimeStr = format.format(UTCDate) ;
} catch (ParseException e) {
e.printStackTrace();
}

return localTimeStr ;
}


再来个更高级的,可以获得各个时区的时间

/**
* 获得任意时区的时间
*
* @param timeZoneOffset
* @return
*/
public static String getFormatedDateString(float timeZoneOffset) {
if (timeZoneOffset > 13 || timeZoneOffset < -12) {
timeZoneOffset = 0;
}
int newTime = (int) (timeZoneOffset * 60 * 60 * 1000);
TimeZone timeZone;
String[] ids = TimeZone.getAvailableIDs(newTime);
if (ids.length == 0) {
timeZone = TimeZone.getDefault();
} else {
timeZone = new SimpleTimeZone(newTime, ids[0]);
}

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(timeZone);
return sdf.format(new Date());
}


上面这些方法也是在网上看别的网友写的,如果大家有更好的方式,请不吝赐教


参考:

http://www.cnblogs.com/zyw-205520/p/4632490.html



相关文章
|
11月前
|
存储 Java API
java 时区时间转为UTC
通过以上方法和代码示例,你可以轻松地在Java中将特定时区的时间转换为UTC时间。确保理解每一步的实现细节,应用到实际项目中时能有效地处理时区转换问题。
576 18
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
1907 4
java 时区转换日期转换:东八区转为UTC零时区
java 时区转换日期转换:东八区转为UTC零时区
565 0
java 时区转换日期转换:UTC零时区转成东八区-19位
java 时区转换日期转换:UTC零时区转成东八区-19位
500 0
|
存储 Java 测试技术
Java8如何实现多时区和夏令时
Java8如何实现多时区和夏令时
1467 0
Java8如何实现多时区和夏令时
|
Oracle Java 关系型数据库
高级JAVA开发必备技能:时区的规则发生变化时,如何同步JDK的时区规则(实战方案,建议收藏)
高级JAVA开发必备技能:时区的规则发生变化时,如何同步JDK的时区规则(实战方案,建议收藏)
677 0
高级JAVA开发必备技能:时区的规则发生变化时,如何同步JDK的时区规则(实战方案,建议收藏)
|
存储 Oracle 安全
高级JAVA开发必备技能:java8 新日期时间API((一)JSR-310:ZoneId 时区和偏移量)(JAVA 小虚竹)
高级JAVA开发必备技能:java8 新日期时间API((一)JSR-310:ZoneId 时区和偏移量)(JAVA 小虚竹)
933 0
高级JAVA开发必备技能:java8 新日期时间API((一)JSR-310:ZoneId 时区和偏移量)(JAVA 小虚竹)
|
Oracle 关系型数据库 Java
Oracle 恢复 Java 时区数据工具tzupdater
     甲骨文公司曾经做了一个艰难决定 ,从公共下载区域中删除 tzupdater 工具。
2023 0