日期类型转换

来源:互联网 发布:2016淘宝快速打造爆款 编辑:程序博客网 时间:2024/05/16 02:00
public static final int HOURS = 0;public static final int MINUTES = 1;
/** * 将字符串转换成日期格式 * @param date * @param format * @return * @throws Exception */public static Date parseDate(String date,String format) throws Exception{if(format==null){format="yyyy-MM-dd HH:mm:ss.SSS";}SimpleDateFormat dateToString=new SimpleDateFormat(format);return dateToString.parse(date);}
/** * 转date为字符串 * @param date 要转换的date * @param format 格式,传null表示用"yyyy-MM-dd HH:mm:ss.SSSZ"为默认格式 * @return 格式化以后的字符串日期 */public static String changeDate(Date date,String format){if(format==null){format="yyyy-MM-dd HH:mm:ss.SSSZ";}SimpleDateFormat dateToString=new SimpleDateFormat(format);return dateToString.format(date);}



/** * 改变时间,返回改变后的字符串 * @param date 要改变的date * @param time 改多少(正加,负减) * @param type 改什么(小时,分钟) * @param format 返回字符串的格式,传null表示用"yyyy-MM-dd HH:mm:ss.SSSZ"为默认格式 * @return 改变后的字符串 */public static String addTime(Date date, int time, int type, String format) {Calendar c = new GregorianCalendar();//创建日期对象c.setTime(date);//设置日期switch (type) {case 0:c.add(Calendar.HOUR_OF_DAY, time);break;case 1:c.add(Calendar.MINUTE, time);break;}return changeDate(c.getTime(),format);}
/** * 把当地格林威治时间字符串转化为GMT-0的时间字符串,用于储存到数据库 * @param param 格林威治格式的时间字符串[例:2012-11-27 10:11:45.038+0800/2012-11-27 10:11:45.038+08] * @return 对应的GMT-0的时间字符串 * @throws Exception */public static String makeTimeZoneToZero(String param) throws Exception{return makeTimeZoneToZero(param,"yyyy-MM-dd HH:mm:ss.SSSZ","yyyy-MM-dd HH:mm:ss.SSS");//格式化日期}/** * 把当地格林威治时间字符串转化为GMT-0的时间字符串,用于储存到数据库 * @param param 格林威治格式的时间字符串 * @param format 傳入日期的格式 * @return 对应的GMT-0的时间字符串 * @throws Exception */public static String makeTimeZoneToZero(String param,String format,String resultFormat) throws Exception{String zone=param.contains("+")?param.substring(param.indexOf("+")+1):param.substring(param.indexOf("-")+1);//截取字符串从+开始截取0800param=zone.length()==4?param:param+"00";//将时区长度为2的补上00SimpleDateFormat sdf=new SimpleDateFormat(format);Date date=sdf.parse(param);Calendar c=Calendar.getInstance();c.setTime(date);long srcTime=c.getTimeInMillis();//获得时间的long值long targetTime=srcTime-TimeZone.getDefault().getRawOffset();//用当前时区减去默认时区sdf=new SimpleDateFormat(resultFormat);Date newDate=new Date(targetTime);return sdf.format(newDate);//格式化日期}/** * 把数据库中GMT-0的时间转户为用户给的时区的时间字符串 * @param param 数据库中的GMT-0时间 * @param timeZone 时区[-12...,-8,...,-1,0,1,.....,8,.....12] * @return 相应时区的时间字符串 * @throws Exception */public static String makeTimeZoneToLocal(String param,int timeZone) throws Exception{SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");sdf.setTimeZone(TimeZone.getTimeZone("GMT"));Date date=sdf.parse(param);Calendar c=Calendar.getInstance();c.setTime(date);c.add(Calendar.HOUR_OF_DAY, timeZone);return sdf.format(c.getTime());}



原创粉丝点击