六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 38|回复: 0

一些和时间有关的小方法

[复制链接]

升级  51.33%

33

主题

33

主题

33

主题

秀才

Rank: 2

积分
127
 楼主| 发表于 2013-2-4 20:22:38 | 显示全部楼层 |阅读模式
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import org.apache.commons.lang.time.DateUtils;public class DateUtil{    /** * 获得传入时间所在周的第一天时间 * @param seeddate * @return * @throws NumberFormatException * @throws ParseException */public static String getFirstDayOfWeek(String seeddate) throws NumberFormatException, ParseException{String finalstr = "";String numOfweek = DayOfWeek(seeddate);finalstr = getEndDateByDay(seeddate,1-Integer.parseInt(numOfweek),"yyyy-MM-dd");return finalstr;}/** * 获得传入时间所在周的最后一天时间 * @param seeddate * @return * @throws NumberFormatException * @throws ParseException */public static String getLastDayOfWeek(String seeddate) throws NumberFormatException, ParseException{String finalstr = "";String numOfweek = DayOfWeek(seeddate);finalstr = getEndDateByDay(seeddate,7-Integer.parseInt(numOfweek),"yyyy-MM-dd");return finalstr;}/** * 获得当前时间是所在星期的第几天(第一天为星期天) * @param seeddate * @return */public static String DayOfWeek(String seeddate){String finalstr = "";try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar seedCalendar = Calendar.getInstance();seedCalendar.setTime(sdf.parse(seeddate));int DayOfWeek = seedCalendar.get(Calendar.DAY_OF_WEEK);return String.valueOf(DayOfWeek);} catch (Exception e) {e.printStackTrace();return null;}}    /**     * 获得传入日期所在年份     * @param seeddate     * @return     */    public static String getYearOfDate(Date seeddate)    {        String finalstr = "";        try        {            Calendar seedCalendar = Calendar.getInstance();            seedCalendar.setTime(seeddate);            finalstr = String.valueOf(seedCalendar.get(Calendar.YEAR));            return finalstr;        }        catch (Exception e)        {            e.printStackTrace();            return null;        }    }    /**     * 获得所在日期所在月份     * @param seeddate     * @return     */    public static String getMonthOfDate(Date seeddate)    {        String finalstr = "";        try        {            Calendar seedCalendar = Calendar.getInstance();            seedCalendar.setTime(seeddate);            finalstr = String.valueOf(seedCalendar.get(Calendar.MONTH) + 1);            return finalstr;        }        catch (Exception e)        {            e.printStackTrace();            return null;        }    }    /**     * 获得传入日期所在年份的月份的最后一天     * @param seeddate     * @return     * @throws ParseException     */    public static String getLastDayOfMonthOfYear(String seeddate)            throws ParseException    {        String finalstr = "";        try        {            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");            Calendar seedCalendar = Calendar.getInstance();            seedCalendar.setTime(sdf.parse(seeddate));            int MaxDayOfMonthOfYear = seedCalendar                    .getActualMaximum(Calendar.DATE);            finalstr = seedCalendar.get(Calendar.YEAR) + "-"                    + (seedCalendar.get(Calendar.MONTH) + 1) + "-"                    + MaxDayOfMonthOfYear;            return finalstr;        }        catch (Exception e)        {            e.printStackTrace();            return null;        }    }    /**     * 获得传入日期所在年份的月份的第一天     * @param seeddate     * @return     * @throws ParseException     */    public static String getFirstDayOfMonthOfYear(String seeddate)            throws ParseException    {        String finalstr = "";        try        {            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");            Calendar seedCalendar = Calendar.getInstance();            seedCalendar.setTime(sdf.parse(seeddate));            int MaxDayOfMonthOfYear = seedCalendar                    .getActualMaximum(Calendar.DATE);            finalstr = seedCalendar.get(Calendar.YEAR) + "-"                    + (seedCalendar.get(Calendar.MONTH) + 1) + "-01";            return finalstr;        }        catch (Exception e)        {            e.printStackTrace();            return null;        }    }    /**     * 获得距离开始日期之后指定月份数的日期     *      * @param Begindate     * @param monthNum     * @param dateformat     * @return     * @throws ParseException     */    public static String getEndDateByYear(String Begindate, int yearNum,            String dateformat) throws ParseException    {        String finalstr = "";        Calendar endCalender = Calendar.getInstance();        SimpleDateFormat sdf = new SimpleDateFormat(dateformat);        endCalender.setTime(sdf.parse(Begindate));        endCalender.add(Calendar.YEAR, yearNum);        Date endDate = endCalender.getTime();        finalstr = sdf.format(endDate);        return finalstr;    }    /**     * 获得距离开始日期之后指定月份数的日期     *      * @param Begindate     * @param monthNum     * @param dateformat     * @return     * @throws ParseException     */    public static String getEndDateByMonth(String Begindate, int monthNum,            String dateformat) throws ParseException    {        String finalstr = "";        Calendar endCalender = Calendar.getInstance();        SimpleDateFormat sdf = new SimpleDateFormat(dateformat);        endCalender.setTime(sdf.parse(Begindate));        endCalender.add(Calendar.MONTH, monthNum);        Date endDate = endCalender.getTime();        finalstr = sdf.format(endDate);        return finalstr;    }    /** * 获得距离开始日期之后指定年份数的日期 *  * @param Begindate * @param monthNum * @param dateformat * @return * @throws ParseException */public static String getEndDateByDay(String Begindate, int dayNum,String dateformat) throws ParseException {String finalstr = "";Calendar endCalender = Calendar.getInstance();SimpleDateFormat sdf = new SimpleDateFormat(dateformat);endCalender.setTime(sdf.parse(Begindate));endCalender.add(Calendar.DATE, dayNum);Date endDate = endCalender.getTime();finalstr = sdf.format(endDate);return finalstr;}        /**     * 获得2个日期之间的月份差     *      * @param begindate     * @param enddate     * @return     */    public static int getMonthDistance(Date begindate, Date enddate)    {        int finalnum = 0;        Calendar beginCalendar = Calendar.getInstance();        Calendar endCalendar = Calendar.getInstance();        beginCalendar.setTime(begindate);        endCalendar.setTime(enddate);        finalnum = endCalendar.get(Calendar.MONTH)                - beginCalendar.get(Calendar.MONTH);        return finalnum;    }    /**     * 获得2个日期之间的年份差     *      * @param begindate     * @param enddate     * @return     */    public static int getYearDistance(Date begindate, Date enddate)    {        int finalnum = 0;        Calendar beginCalendar = Calendar.getInstance();        Calendar endCalendar = Calendar.getInstance();        beginCalendar.setTime(begindate);        endCalendar.setTime(enddate);        if (beginCalendar.get(Calendar.YEAR) > endCalendar.get(Calendar.YEAR))        {            finalnum = beginCalendar.get(Calendar.YEAR)                    - endCalendar.get(Calendar.YEAR);        }        else        {            finalnum = endCalendar.get(Calendar.YEAR)                    - beginCalendar.get(Calendar.YEAR);        }        return finalnum;    }        /**     * 以开始时间计算结束时间     * @param day 具体天数 0:当天 1:第二天依此类推     * @return 第二天的零时     */    public static Date getEndDatetime(int day)    {    Calendar c = Calendar.getInstance();c.add(Calendar.DAY_OF_MONTH, +day);Calendar date = DateUtils.round(c, Calendar.DAY_OF_MONTH);String datetime = StringUtil.dateToStr(new Date(date.getTimeInMillis()), "yyyy-MM-dd HH:mm:ss");return StringUtil.strToDate(datetime,"yyyy-MM-dd hh:mm:ss");    }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表