毕设问题小记——日期的一些处理

  在毕设过程出,多次遇到需要处理日期格式的地方,而今天需要根据周次编号、该周起始日期、周数生成之后每一周的起止时间,以用来判断当前系统所处阶段,因此打算花点时间写个简单的日期操作类。其中主要完成String、Date、Timestamp(默认情况下hibernate对于Mssql的date字段生成的Timestamp类型,对于mysql却生成的Date)相互转换,获取当前日期,计算当前日期相差某个天数后的日期(使用GregorianCalendar很容易实现)。代码如下:

package com.sxpt.util;



import java.sql.Timestamp;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;



public class DateOperater {

    

    /**

     * 字符转转DATE

     * @param date

     * @param format "yyyy-MM-dd" 或"yyyy-MM-dd hh:mm:ss"

     * @return

     */

    static public Date StrToDate(String date,String format){

        SimpleDateFormat sdf = new SimpleDateFormat(format);

        Date de=null;

        try {

            de=sdf.parse(date);

        } catch (ParseException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return de;

    }

    

    /**

     * DATE转字符转

     * @param de

     * @param format format "yyyy-MM-dd" 或"yyyy-MM-dd HH:mm:ss"

     * @return

     */

    static public String DateToString(Date de,String format){

        String str=null;

        SimpleDateFormat sdf = new SimpleDateFormat(format);

        str=sdf.format(de);

        return str;

    }

    

    

    /**

     * date转Timestamp

     * @param de

     * @return

     */

    static public Timestamp DateToTime(Date de){

        String str=DateToString(de,"yyyy-MM-dd HH:mm:ss");

        Timestamp ts=Timestamp.valueOf(str);

        return ts;

    }

    

    /**

     * Timestamp转Date

     * @param ts

     * @return

     */

    static public Date TimeToDate(Timestamp ts){

        Date de=new Date();

        de=ts;

        return de;

    }

    

    

    /**

     * Timestamp转String

     * @param ts

     * @param format format "yyyy-MM-dd" 或"yyyy-MM-dd hh:mm:ss"

     * @return

     */

    static public String TimeToStr(Timestamp ts,String format){

        SimpleDateFormat sdf = new SimpleDateFormat(format);

        String str=sdf.format(ts);

        return str;

    }

    

    /**

     * 计算当前日期相差几天后的日期

     * @param currentDate    当前日期

     * @param num    相距天数

     * @return

     */

    static public Date getFurDate(Date currentDate,int num) {

        GregorianCalendar cal = new GregorianCalendar();

        cal.setTime(currentDate);

        cal.add(GregorianCalendar.DATE, num);// 在日期上加7天

        return cal.getTime();

    }

    

    /**

     * 获取当前日期

     * @return

     */

    static public Date CurrentDate(){

          Calendar ca = Calendar.getInstance();

          int year = ca.get(Calendar.YEAR)-1900;//获取年份

          int month=ca.get(Calendar.MONTH);//获取月份 

          System.out.println(month);

          int day=ca.get(Calendar.DATE);//获取日

          int minute=ca.get(Calendar.MINUTE);//

          int hour=ca.get(Calendar.HOUR);//小时 

          int second=ca.get(Calendar.SECOND);//

          Date de=new Date(year, month, day, hour, minute, second);

          return de;

    }

}

下边是基于此实现的周次编号、该周起始日期、周数生成之后每一周的起止时间:


//beginweek:其实周次,begindate:该周起始日期,weeknum:计算周数
public void GetWeekDate(int beginweek,String begindate,int weeknum){

        //计算起始时间

        Date de=DateOperater.StrToDate(begindate+" 0:0:0", "yyyy-MM-dd HH:mm:ss");

        

        //计算每周起止时间,生成记录

        for(int i=beginweek;i<beginweek+weeknum;i++){

            int tmpnum=(i-beginweek)*7;

            System.out.println(DateOperater.DateToTime(DateOperater.getFurDate(de, tmpnum)));

            System.out.println(DateOperater.DateToTime(DateOperater.getFurDate(de, tmpnum+7)));

        }

        

    }

 

你可能感兴趣的:(日期)