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

  在毕设过程出,多次遇到需要处理日期格式的地方,而今天需要根据周次编号、该周起始日期、周数生成之后每一周的起止时间,以用来判断当前系统所处阶段,因此打算花点时间写个简单的日期操作类。其中主要完成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)));
        }
        
    }

 

posted @ 2013-04-16 00:19  oO脾气不坏Oo  阅读(362)  评论(0编辑  收藏  举报