java中关于时区转换的方法

8 篇文章 0 订阅
2 篇文章 0 订阅
public class ConvertTimeZoneUtil {
	
	protected static final Log log = LogFactory.getLog("ConvertTimeZoneUtil.java");
	
	public static String convertTimeFromSourceTimeZoneToTargetTimeZone(String dateTimeStr, String dateFormat, String sourceTimeZoneID, 
			String targetTimeZoneID){
		log.info("ConvertTimeZoneUtil.java");
		log.info("enter function--->convertTimeFromSourceTimeZoneToTargetTimeZone");
		log.info("dateTime:"+dateTimeStr+",dateFormat:"+dateFormat+",sourceTimeZoneID:"+sourceTimeZoneID+",targetTimeZoneID:"+targetTimeZoneID);
		String dateTime = "";
		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);   
		try {   
            int diffTime = TimeZone.getTimeZone(sourceTimeZoneID).getRawOffset() -  TimeZone.getTimeZone(targetTimeZoneID).getRawOffset();    
			Date newDate = sdf.parse(dateTimeStr);  
			long nowTime = newDate.getTime();   
			long newNowTime = nowTime - diffTime;   
			newDate = new Date(newNowTime);   
			dateTime= sdf.format(newDate);   		
		} catch (ParseException e) {   
			e.printStackTrace(); 
		} catch(Exception e1) {
			e1.printStackTrace();
		} 
		log.info("result time:"+dateTime);
		return dateTime;
	}
	
	public static String convertLocalTimeToTargetTimeZone(String localTime, String dateFormat, 
			String targetTimeZoneID){
		log.info("ConvertTimeZoneUtil.java");
		log.info("enter function--->convertLocalTimeToTargetTimeZone");
		log.info("localTime:"+localTime+",dateFormat:"+dateFormat+",targetTimeZoneID:"+targetTimeZoneID+",localTimeZoneID:"+TimeZone.getDefault().getID());
		String dateTime = "";
		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);   
		try {   
            int diffTime = TimeZone.getDefault().getRawOffset() - TimeZone.getTimeZone(targetTimeZoneID).getRawOffset();    
			Date newDate = sdf.parse(localTime);  
			long nowTime = newDate.getTime();   
			long newNowTime = nowTime - diffTime;   
			newDate = new Date(newNowTime);   
			dateTime= sdf.format(newDate);   		
		} catch (ParseException e) {   
			e.printStackTrace(); 
		} catch(Exception e1) {
			e1.printStackTrace();
		} 
		log.info("result time:"+dateTime);
		return dateTime;
	}
	
	public static String convertTimeFromSourceTimeZoneTimeToLocalTimeZone(String sourceTime, String dateFormat, 
			String sourceTimeZoneID){
		log.info("ConvertTimeZoneUtil.java");
		log.info("enter function--->convertTimeFromSourceTimeZoneTimeToLocalTimeZone");
		log.info("sourceTime:"+sourceTime+",dateFormat:"+dateFormat+",sourceTimeZoneID:"+sourceTimeZoneID+",localTimeZoneID:"+TimeZone.getDefault().getID());
		String dateTime = "";
		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);   
		try {   
			int diffTime = TimeZone.getTimeZone(sourceTimeZoneID).getRawOffset() - TimeZone.getDefault().getRawOffset();    
			Date newDate = sdf.parse(sourceTime);  
			long nowTime = newDate.getTime();   
			long newNowTime = nowTime - diffTime;   
			newDate = new Date(newNowTime);   
			dateTime= sdf.format(newDate);   		
		} catch (ParseException e) {   
			e.printStackTrace(); 
		} catch(Exception e1) {
			e1.printStackTrace();
		} 
		log.info("result time:"+dateTime);
		return dateTime;
	}
	
	
	
	
	public static void main(String[] args) {
		String dateFormat = "MM/dd/yyyy hh:mma";
		/*String localTime = new SimpleDateFormat(dateFormat).format(new Date());
		convertLocalTimeToTargetTimeZone(localTime, dateFormat, "GMT+3");
		String srcDateTime="02/15/2013 10:56上午";
		log.info("----------------------------------");
		convertTimeFromSourceTimeZoneTimeToLocalTimeZone(srcDateTime, dateFormat, "GMT+3");
		log.info("----------------------------------");*/
		String sourceTime=new SimpleDateFormat(dateFormat).format(new Date());
		convertTimeFromSourceTimeZoneToTargetTimeZone("02/25/2013 1:37上午", dateFormat, "GMT-8", "GMT+8");
	}
	
}

sybase数据库获得时区的sql: select datediff (hh, getutcdate(), getdate())

获得客户端浏览器的时区的js代码,并将些时区的ID通Ajax方法发送给后服务器。

<script type="text/javascript">
             var d, tz, s = "";
             d = new Date();
             tz = d.getTimezoneOffset();
             tz = tz*(-1);
            
             if(tz < 0) {
                 s = s + "GMT-";
                 tz = tz * (-1);
             }
             else s = s + "GMT+";
               
             if(tz >= 0) {
                 var hour = Math.floor(tz/60);
                
                 var minute = tz - Math.floor(tz/60) * 60;
                 if(hour < 10) s = s + "0" + hour;
                 else s = s + hour;
                 s = s + ":";
                 if(minute < 10) s = s + "0" + minute;
                 else s = s + minute;
             }
             var homeURL = $("#homeURL").html()+"/home?";
             $.getJSON(homeURL,{"timeZoneCode":s},function(data){
             });
              
            
         </script>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值