您的位置:首页 > 编程语言 > Java开发

java处理日期相关的方法

2013-03-20 08:40 381 查看
import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Vector;

/**

 * @author Ring

 * 日期工具类

 * 1.将日期转成星期:DateToWeek(String date)

 * 2.获取当前时间(格式:2013-01-16 09:47:30):getDateTime()

 * 3.获取当前日期(格式:2013-01-16):getDate()

 * 4.将时间转成数据库中的格式:dateTimeToDBDateTime(String str)

 * 5.将日期转成数据库中的格式:dateToDBDateTime(String str)

 * 6.判断当前日期是星期几:getDayForWeek(String pTime)

 * 7. 判断当前星期中文名:getWeekName(int week)

 * 8.把星期转成日期:weekToDate(String weekDay)

 * 9.将星期转换成数字:weekToNumber(String str)

 * 10. 获取+i天的日期:getNDayDate(int factor)

 * 11.今天是星期几:getTodayWeek()

 * 12.获取指定日期段的所有日期:getDateArrays(String start, String end)

 * 13.指定一个日期,返回一个afterday之后的日期:getDateAfterintday

 * 14. 计算两个日期之间的天数:getDaysBetweenDates(String start, String end)

 * 15. 获取指定日期的前一天的日期:String getSpecifiedDayBefore(String specifiedDay)

 */

public class DateUtil {

 /**

  * 1.将日期转成星期

  * 返回值格式如:星期一

  * 参数的格式:2013-01-14 或2013-1-14

  * 根据日期判断是星期几 参数的格式:2013-01-14 或2013-1-14

  *

  * @param date

  * @return

  */

 public static String DateToWeek(String date) {

  try {

   return getWeekName(getDayForWeek(date));

  } catch (Exception e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

   return null;

  }

 }

 

 

 /**

  * 2.获取当前时间

  * 返回值的格式:2013-01-16 09:47:30

  * @return

  */

 public static String getDateTime() {

  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  Date dd = new Date();

  return ft.format(dd);

 }

 /**

  *获取当前时间:

  * 时间格式:20130117185930

  * @return

  */

 public static String getDateTimeString() {

  SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddHHmmss");

  Date dd = new Date();

  return ft.format(dd);

 }

 /**

  *3. 获取当前日期

  * 返回值的格式:2013-01-16

  * @return

  */

 public static String getDate() {

  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");

  Date dd = new Date();

  return ft.format(dd);

 }

 /**

  * 4.将时间转成数据库中的格式

  * 将格式为"2013-01-15 10:09"转成"2013-01-15 10:09:00.000"

  * @param str

  * @return

  */

 public static String dateTimeToDBDateTime(String str) {

  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

  try {

   return ft.format(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(str));

  } catch (ParseException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

   return null;

  }

  

 }

 

 /**

  * 5.将日期转成数据库中的格式

  * 将格式为"2013-01-15"转成"2013-01-15 00:00:00.000"

  * @param str

  * @return

  */

 public static String dateToDBDateTime(String str) {

  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

  try {

   return ft.format(new SimpleDateFormat("yyyy-MM-dd").parse(str));

  } catch (ParseException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

   return null;

  }

  

 }

 

 

 

 /**

     * 6.判断当前日期是星期几

     * @param pTime

     * 修要判断的时间<br>

     * @return dayForWeek 判断结果<br>

     * @Exception 抛出异常<br>

     */

    public static int getDayForWeek(String pTime) throws Exception {

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

        Calendar c = Calendar.getInstance();

        c.setTime(format.parse(pTime));

        int dayForWeek = 0;

        if (c.get(Calendar.DAY_OF_WEEK) == 1) {

            dayForWeek = 7;

        } else {

            dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;

        }

        return dayForWeek;

    }

    /**

     * 7.判断当前星期中文名

     * @param week

     * @return

     */

    public static String getWeekName(int week) {

        String weekName = "星期日";

        switch (week) {

        case 1: {

            weekName = "星期一";

            break;

        }

        case 2: {

            weekName = "星期二";

            break;

        }

        case 3: {

            weekName = "星期三";

            break;

        }

        case 4: {

            weekName = "星期四";

            break;

        }

        case 5: {

            weekName = "星期五";

            break;

        }

        case 6: {

            weekName = "星期六";

            break;

        }

        default: {

            break;

        }

        }

        return weekName;

    }

   

 

 

 /**

  * 8.把星期转成日期

  * @param weekDay

  * @return

  */

 public static String weekToDate(String weekDay) {

  //weekToDate(weekToNumber("星期四"))

  int number=weekToNumber(weekDay);

  int todayWeek=getTodayWeek();

  if(number==(todayWeek%7))

   return getNDayDate(0);

  else if(number==(todayWeek+1)%7)

   return getNDayDate(1);

  else if(number==(todayWeek+2)%7)

   return getNDayDate(2);

  else if(number==(todayWeek+3)%7)

   return getNDayDate(3);

  else if(number==(todayWeek+4)%7)

   return getNDayDate(4);

  else if(number==(todayWeek+5)%7)

   return getNDayDate(5);

  else if(number==(todayWeek+6)%7)

   return getNDayDate(6);

  return null;

  

 }

 

 

 /**

  * 9.将星期转换成数字

  * @param str

  * @return

  */

 private static int weekToNumber(String str){

  if(str.equalsIgnoreCase("星期一")||str.equalsIgnoreCase("星期1"))

   return 1;

  else if(str.equalsIgnoreCase("星期二")||str.equalsIgnoreCase("星期2"))

   return 2;

  else if(str.equalsIgnoreCase("星期三")||str.equalsIgnoreCase("星期3"))

   return 3;

  else if(str.equalsIgnoreCase("星期四")||str.equalsIgnoreCase("星期4"))

   return 4;

  else if(str.equalsIgnoreCase("星期五")||str.equalsIgnoreCase("星期5"))

   return 5;

  else if(str.equalsIgnoreCase("星期六")||str.equalsIgnoreCase("星期6"))

   return 6;

  else if(str.equalsIgnoreCase("星期日")||str.equalsIgnoreCase("星期7"))

   return 0;

  else

   return 8;

 }

 

  /**

   *10. 获取+i天的日期

   * @param factor

   * @return

   */

 private static String getNDayDate(int factor) {

  Date date=new Date();//取时间

  //System.out.println("date"+date);

  Calendar calendar = new GregorianCalendar();

  calendar.setTime(date);

  //calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动

  calendar.add(calendar.DATE,factor);//把日期往后增加一天.整数往后推,负数往前移动

  date=calendar.getTime(); //这个时间就是日期往后推一天的结果

  //System.out.println("calendar.getTime()"+date);

  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); //设置日期格式

  String dateString = formatter.format(date);

  //System.out.println("dateString"+dateString); 

  return dateString;

 }

 

 /**

  *11:今天是星期几

  *1:星期一,2:星期二,3:星期三,4:星期四,5:星期五,6:星期六,0:星期日

  * @return

  */

 public static int getTodayWeek() {

  Calendar cal = Calendar.getInstance(); // 创建一个日历对象

  System.out.println(cal.toString());

  //System.out.println(cal.get(Calendar.DAY_OF_WEEK) - 1);

  return (cal.get(Calendar.DAY_OF_WEEK) - 1);

 }

  /**

   * 12.获取指定日期段的所有日期

   * 参数格式:2013-01-13

   * 输出日期格式:2013-01-13

   * @param start

   * @param end

   * @return

   */

 public static String[] getDateArrays(String start, String end) {

  //start在前,end在后,如果end比start早则返回null

  if(getDaysBetweenDates(start,end)>=0) {

   Vector<String> v = new Vector<String>();

   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

   GregorianCalendar gc1 = new GregorianCalendar();

   GregorianCalendar gc2 = new GregorianCalendar();

   try {

    gc1.setTime(sdf.parse(start));

    gc2.setTime(sdf.parse(end));

    do {

     GregorianCalendar gc3 = (GregorianCalendar) gc1.clone();

     v.add(sdf.for
a5fd
mat(gc3.getTime()));

     gc1.add(Calendar.DAY_OF_MONTH, 1);

    } while (!gc1.after(gc2));

    return v.toArray(new String[v.size()]);

   } catch (ParseException e) {

    e.printStackTrace();

    System.out.println("日期格式不符合要求");

    return null;

   }

  }else {

   System.out.println("开始时间大于结束时间,请重新选择!");

   return null;

  }

   

  

 }

 /**

  * 13.指定一个日期,返回一个afterday之后的日期

  * @param start

  * @param afterday

  * @return

  */

 public static Date getDateAfterintday(Date start, int afterday) {

  Calendar calendar = Calendar.getInstance();

  calendar.setTime(start);

  calendar.add(5, afterday);// 5表示操作日期

  Date d = calendar.getTime();

  return d;

 }

 /**

  * 14. 计算两个日期之间的天数

  *  返回值类型int

  *  若想返回值为整数,小日期在前,大日期在后

  *  "2013-02-1"   "2013-01-14"

  * @param start

  * @param end

  * @return

  */

 public static int getDaysBetweenDates(String start, String end) {

  long quot = 0;

  int interval=0;

  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");

  try {

   Date date1 = ft.parse(end);

   Date date2 = ft.parse(start);

   quot = date1.getTime() - date2.getTime();

   interval = (int)(quot / 1000 / 60 / 60 / 24);

  } catch (ParseException e) {

   e.printStackTrace();

  }

  System.out.println(interval);

  return interval;

 }

 /**

  * 15.获取指定日期的前一天的日期

  * @param specifiedDay

  * @return

  */

 public static String getSpecifiedDayBefore(String specifiedDay){

  //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

  Calendar c = Calendar.getInstance();

  Date date=null;

  try {

  date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);

  } catch (ParseException e) {

  e.printStackTrace();

  }

  c.setTime(date);

  int day=c.get(Calendar.DATE);

  c.set(Calendar.DATE,day-1);

  String dayBefore=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());

  return dayBefore;

  }

    public static void main(String[] args) {

     System.out.println(getSpecifiedDayBefore("2013-03-01"));

 }

    /*//将星期转成日期

    public String getWeekNameForDay(int days) {

        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");

        Date dt = new Date();

        dt.setDate(dt.getDate() + days);

        String date = sDateFormat.format(dt);

        int onlineDay = 0;

        try {

            onlineDay = getDayForWeek(date);

            date = getWeekName(onlineDay);

        } catch (Exception e) {

*/

    /**

  *获取指定时间段的所有日期

  *(张丹使用的方法)

  *calendarType

  * 1则代表的是对年份操作

  * 2是对月份操作

  * 3是对星期操作

  * 5是对日期操作

  * 11是对小时操作

  * 12是对分钟操作

  * 13是对秒操作

  * 14是对毫秒操作。

  * @param start

  * @param end

  * @param calendarType

  * @return

  */

 public static Date[] getDateArrays(Date start, Date end, int calendarType) {

  ArrayList ret = new ArrayList();

  Calendar calendar = Calendar.getInstance();

  calendar.setTime(start);

  Date tmpDate = calendar.getTime();

  long endTime = end.getTime();

  while (tmpDate.before(end) || tmpDate.getTime() == endTime) {

   ret.add(calendar.getTime());

   calendar.add(calendarType, 1);

   tmpDate = calendar.getTime();

  }

  Date[] dates = new Date[ret.size()];

  return (Date[]) ret.toArray(dates);

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: