本文共 1729 字,大约阅读时间需要 5 分钟。
最近,由于公司的服务器在国外有,国内也有,但是项目都是同一份,所以所有关于时间的部分,都需要统一,尤其是用户下单之类的,涉及到订单15分钟超时失效问题,所以就更应该统一,目前我们是都统一成东八区北京时间,具体代码如下,如果哪位大神发现代码有问题,请留言指教
import java.text.SimpleDateFormat;import java.util.Date;import java.util.SimpleTimeZone;import java.util.TimeZone;/** * 时区工具 * @author Administrator * */public class TimeZoneUtil { /** * 取北京时间,格式:yyyy-MM-dd HH:mm:ss * @return */ public static String getBeijingTime(){ return getFormatedDateString(8); } /** * 取班加罗尔时间 * @return */ public static String getBangaloreTime(){ return getFormatedDateString(5.5f); } /** * 取纽约时间 * @return */ public static String getNewyorkTime(){ return getFormatedDateString(-5); } /** * 此函数非原创,从网上搜索而来,timeZoneOffset原为int类型,为班加罗尔调整成float类型 * timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8 * @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()); } public static void main(String[] args) { String bjTime = getBeijingTime() ; System.out.println(bjTime); String newyorkTime = getNewyorkTime() ; System.out.println(newyorkTime); } }
转载地址:http://dbqgi.baihongyu.com/