java 时间转化工具类
来源:互联网 发布:网络文明绘画图片大全 编辑:程序博客网 时间:2024/05/16 04:41
package cn.my.utils;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Map;/** 时间工具类<p> * * @version 1.0<br> */public class DateUtil {/** * 获得两个时间字符的时间差 * @param startTime * @param endTime * @return * @throws ParseException * Integer */public static Integer distanceBySE(String startTime,String endTime){SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//通过字符串创建两个日期对象Date firstDate = null;Date secondDate = null;try {firstDate = sdf.parse(endTime);secondDate = sdf.parse(startTime);} catch (ParseException e) {e.printStackTrace();}//得到两个日期对象的总毫秒数long firstDateMilliSeconds = firstDate.getTime();long secondDateMilliSeconds = secondDate.getTime();//得到两者之差long firstMinusSecond = firstDateMilliSeconds - secondDateMilliSeconds;//毫秒转为秒long milliSeconds = firstMinusSecond;int totalSeconds = (int)(milliSeconds / 1000);//得到总天数Integer days = totalSeconds / (3600*24);return days;}/** * 把格式为 年-月-日的时间转成年月日<p> * @param data * @return <p> * String */public static String dataStr(String data){String[] str = data.split("-");String str1= "";for(int i =0 ;i<str.length; i++){str1= str1+str[i];}if(str1.length() >0){return str1.trim();}return null;}/** * 把格式为yyyy-MM-dd的转化成yyyyMMdd<p> * @param date * @return <p> * String */public static String dateByNum(String date){SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");return format.format(strToDate(date,"yyyy-MM-dd"));}/** * 把格式为yyyy-MM-dd的转化成yyyyMMdd<p> * @param date * @return <p> * String */public static String dateMonthByNum(String date){SimpleDateFormat format = new SimpleDateFormat("yyyyMM");return format.format(strToDate(date,"yyyy-MM"));}/** * 把格式为yyyy-MM的时间获取开始时间和结算时间<p> * @param monthDate * @return 20140401_20140430<p> * String */public static String monthByStartAndEndTime(String monthDate){String[] str =monthDate.split("-");//日历Calendar c = Calendar.getInstance();//设置这个月的第一天c.set(Integer.parseInt(str[0]), Integer.parseInt(str[1])-1, 1);//获取这个月一共有多少天int lastDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);String date =str[0]+str[1]+"01"+"_"+str[0]+str[1]+lastDay+"";return date;}public static String getWeekDate(String date){String[] str = date.split("-");return weekGetDate(str[0],str[1],Integer.parseInt(str[2]));}/** * 获得这周的开始时间 * @param year * @param month * @param week * @return * Date */public static Date getProParamDate(String year , String month , int week){String time = weekGetDate(year, month, week);String[] times = time.split("_");SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd");Date datatime = null;try {datatime = formatDate.parse(times[0]);} catch (ParseException e) {e.printStackTrace();}return datatime;}/** * 根据年月周获取开始时间和结束时间<p> * @param year 年 * @param month 月 * @param week 周 * @return 开始时间和结算时间的字符串<p> * String */public static String weekGetDate(String year,String month,int week){ // 存储周数所对应的天数Map<Integer, String> map =new HashMap<Integer, String>();//日历Calendar c = Calendar.getInstance();//设置这个月的第一天c.set(Integer.parseInt(year), Integer.parseInt(month)-1, 1);//获取这个月的第一天int firstWeek=c.get(Calendar.DAY_OF_WEEK)-1;//获取这个月一共有多少天int lastDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);double a; if(firstWeek ==0){ a =7; }else{ a=firstWeek; } //计算这个月一共有多少周int weekNum = (int) Math.ceil((lastDay-(7-a+1))/7)+1;double startDay = 1;//循环获取这月的日期for(int i=1;i<=weekNum;i++){if(i==1){map.put(i, year+"-"+month+"-"+(int)startDay+"_"+year+"-"+month+"-"+(int)((7-a)+1));startDay = (7-a)+1;}else{map.put(i, year+"-"+month+"-"+(int)(startDay+1)+"_"+year+"-"+month+"-"+(int)(startDay+7));startDay=startDay+7;if(startDay>lastDay){startDay=startDay-7;map.put(i, year+"-"+month+"-"+(int)(startDay+1)+"_"+year+"-"+month+"-"+(int)lastDay);break;}}}//根据周数获取开始时间和结算时间return map.get(week);}/** * 将指定格式的字符串转换为日期类型,如果格式与字符串不匹配,则返回null。 * @param dateStr 待转换的字符串 * @param format 日期格式 * @return 转换后的日期对象 */ public static Date strToDate(String dateStr, String format) { //构造制定格式format的SimpleDateFormat对象。 SimpleDateFormat formatter = new SimpleDateFormat(format); //进行转换,这里要传入new ParsePosition(0),否则是抛出异常,而不是返回null return formatter.parse(dateStr, new ParsePosition(0)); } public static String strToString(String str){ String strs =null; if(str.length()==4){ strs ="00"+str; }else if(str.length()==5){ strs ="0"+str; }else if(str.length()==3){ strs ="000"+str; }else if(str.length()==2){ strs ="0000"+str; }else if(str.length()==1){ strs ="00000"+str; }else if(str.length()==0){ strs ="000000"; } else{ strs =str; }return strs; } public static Date getSpecifiedDay(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day-1); Date endDate = c.getTime();return endDate; } public static Date strDate(String str,String format){ Date date =null; if(str.length()==4){ date = DateUtil.strToDate("00"+str,format); }else if(str.length()==5){ date = DateUtil.strToDate("0"+str,format); } else{ date = DateUtil.strToDate(str,format); }return date; } /** * 一个日期加几天后的日期<p> * @param time 要加以前的日期 * @param addDayNum 要加的天数 * @return 已经加过的日期<p> * Date */ public static Date getDateAddDay(String time,int addDayNum){ try { Date date= (new SimpleDateFormat("yyyyMMdd")).parse(time); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, addDayNum); return cal.getTime(); } catch (ParseException e) { return null; } } /** * 根据省份证号码获取出生日期 * @param iDCard 身份证号码 * @return 出生日期 */ public static Date getBirthDayByiDCard(String iDCard){ String strDate = null; if(iDCard.length()==18){ strDate =iDCard.substring(6,14); }else{ strDate = iDCard.substring(6,12); strDate = "19"+strDate; }return strDate!= null? strToDate(strDate,"yyyyMMdd"):null; }}
0 0
- java 时间转化工具类
- 时间转化工具类分享
- JAVA工具类集锦2--时间格式转化类
- 主键ID、时间转化工具类
- 时间日期工具类(相关转化)
- java日期转化工具类
- java时间工具类
- java 时间工具类
- Java时间工具类
- Java时间工具类
- 时间工具类--java
- Java时间工具类
- java 时间工具类
- java 时间类 工具
- Java时间工具类
- 时间工具类java
- Java时间工具类
- JAVA 时间工具类
- Oracle 外键约束子表、父表
- emf转png emf转jpg
- Android ImageView如何加载网络图片资源
- 王立平--查看SQLite中的数据信息
- Java魔法堂:自定义和解析注解
- java 时间转化工具类
- C语言实现两数交换函数
- java面试题及答案(基础题122道,代码题19道)
- 二 unicode字库制作(智源GM813X多国语言OSD开发)
- Android程序ant打包
- 研读代码必须掌握的五个Eclipse快捷键
- [Leetcode] Path Sum
- DVB and EPG
- 部署新应用shell