`
crackajack_zg
  • 浏览: 54127 次
社区版块
存档分类
最新评论

java日期操作(转的别人的)

 
阅读更多
引用


/** 
         *  取得指定月份的第一天 
         * 
         *  @param  strdate  String 
         *  @return  String 
         */ 
       public  String  getMonthBegin(String  strdate) 
       { 
               java.util.Date  date  =  parseFormatDate(strdate); 
               return  formatDateByFormat(date,"yyyy-MM")  +  "-01"; 
       } 

       /** 
         *  取得指定月份的最后一天 
         * 
         *  @param  strdate  String 
         *  @return  String 
         */ 
       public  String  getMonthEnd(String  strdate) 
       { 
               java.util.Date  date  =  parseFormatDate(getMonthBegin(strdate)); 
               Calendar  calendar  =  Calendar.getInstance(); 
               calendar.setTime(date); 
               calendar.add(Calendar.MONTH,1); 
               calendar.add(Calendar.DAY_OF_YEAR,  -1); 
               return  formatDate(calendar.getTime()); 
       } 

       /** 
         *  常用的格式化日期 
         * 
         *  @param  date  Date 
         *  @return  String 
         */ 
       public  String  formatDate(java.util.Date  date) 
       { 
               return  formatDateByFormat(date,"yyyy-MM-dd"); 
       } 

       /** 
         *  以指定的格式来格式化日期 
         * 
         *  @param  date  Date 
         *  @param  format  String 
         *  @return  String 
         */ 
       public  String  formatDateByFormat(java.util.Date  date,String  format) 
       { 
               String  result  =  ""; 
               if(date  !=  null) 
               { 
                       try 
                       { 
                               SimpleDateFormat  sdf  =  new  SimpleDateFormat(format); 
                               result  =  sdf.format(date); 
                       } 
                       catch(Exception  ex) 
                       { 
                               LOGGER.info("date:"  +  date); 
                               ex.printStackTrace(); 
                       } 
               } 
               return  result; 
       } 
//--------------------------------------------------------------- 

package  com.app.util; 

/** 
*  日期操作 
*   
*  @author  xxx 
*  @version  2.0  jdk1.4.0  tomcat5.1.0  *  Updated  Date:2005/03/10 
*/ 
public  class  DateUtil  { 
           /** 
             *  格式化日期 
             *   
             *  @param  dateStr 
             *                        字符型日期 
             *  @param  format 
             *                        格式 
             *  @return  返回日期 
             */ 
           public  static  java.util.Date  parseDate(String  dateStr,  String  format)  { 
                       java.util.Date  date  =  null; 
                       try  { 
                                   java.text.DateFormat  df  =  new  java.text.SimpleDateFormat(format); 
                                   String  dt=Normal.parse(dateStr).replaceAll( 
                                                           "-",  "/"); 
                                   if((!dt.equals(""))&&(dt.length()<format.length())){ 
                                               dt+=format.substring(dt.length()).replaceAll("[YyMmDdHhSs]","0"); 
                                   } 
                                   date  =  (java.util.Date)  df.parse(dt); 
                       }  catch  (Exception  e)  { 
                       } 
                       return  date; 
           } 

           public  static  java.util.Date  parseDate(String  dateStr)  { 
                       return  parseDate(dateStr,  "yyyy/MM/dd"); 
           } 

           public  static  java.util.Date  parseDate(java.sql.Date  date)  { 
                       return  date; 
           } 
            
           public  static  java.sql.Date  parseSqlDate(java.util.Date  date)  { 
                       if  (date  !=  null) 
                                   return  new  java.sql.Date(date.getTime()); 
                       else 
                                   return  null; 
           } 

           public  static  java.sql.Date  parseSqlDate(String  dateStr,  String  format)  { 
                       java.util.Date  date  =  parseDate(dateStr,  format); 
                       return  parseSqlDate(date); 
           } 

           public  static  java.sql.Date  parseSqlDate(String  dateStr)  { 
                       return  parseSqlDate(dateStr,  "yyyy/MM/dd"); 
           } 

            
           public  static  java.sql.Timestamp  parseTimestamp(String  dateStr, 
                                   String  format)  { 
                       java.util.Date  date  =  parseDate(dateStr,  format); 
                       if  (date  !=  null)  { 
                                   long  t  =  date.getTime(); 
                                   return  new  java.sql.Timestamp(t); 
                       }  else 
                                   return  null; 
           } 

           public  static  java.sql.Timestamp  parseTimestamp(String  dateStr)  { 
                       return  parseTimestamp(dateStr,  "yyyy/MM/dd  HH:mm:ss"); 
           } 

           /** 
             *  格式化输出日期 
             *   
             *  @param  date 
             *                        日期 
             *  @param  format 
             *                        格式 
             *  @return  返回字符型日期 
             */ 
           public  static  String  format(java.util.Date  date,  String  format)  { 
                       String  result  =  ""; 
                       try  { 
                                   if  (date  !=  null)  { 
                                               java.text.DateFormat  df  =  new  java.text.SimpleDateFormat(format); 
                                               result  =  df.format(date); 
                                   } 
                       }  catch  (Exception  e)  { 
                       } 
                       return  result; 
           } 

           public  static  String  format(java.util.Date  date)  { 
                       return  format(date,  "yyyy/MM/dd"); 
           } 

           /** 
             *  返回年份 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回年份 
             */ 
           public  static  int  getYear(java.util.Date  date)  { 
                       java.util.Calendar  c  =  java.util.Calendar.getInstance(); 
                       c.setTime(date); 
                       return  c.get(java.util.Calendar.YEAR); 
           } 

           /** 
             *  返回月份 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回月份 
             */ 
           public  static  int  getMonth(java.util.Date  date)  { 
                       java.util.Calendar  c  =  java.util.Calendar.getInstance(); 
                       c.setTime(date); 
                       return  c.get(java.util.Calendar.MONTH)  +  1; 
           } 

           /** 
             *  返回日份 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回日份 
             */ 
           public  static  int  getDay(java.util.Date  date)  { 
                       java.util.Calendar  c  =  java.util.Calendar.getInstance(); 
                       c.setTime(date); 
                       return  c.get(java.util.Calendar.DAY_OF_MONTH); 
           } 

           /** 
             *  返回小时 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回小时 
             */ 
           public  static  int  getHour(java.util.Date  date)  { 
                       java.util.Calendar  c  =  java.util.Calendar.getInstance(); 
                       c.setTime(date); 
                       return  c.get(java.util.Calendar.HOUR_OF_DAY); 
           } 

           /** 
             *  返回分钟 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回分钟 
             */ 
           public  static  int  getMinute(java.util.Date  date)  { 
                       java.util.Calendar  c  =  java.util.Calendar.getInstance(); 
                       c.setTime(date); 
                       return  c.get(java.util.Calendar.MINUTE); 
           } 

           /** 
             *  返回秒钟 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回秒钟 
             */ 
           public  static  int  getSecond(java.util.Date  date)  { 
                       java.util.Calendar  c  =  java.util.Calendar.getInstance(); 
                       c.setTime(date); 
                       return  c.get(java.util.Calendar.SECOND); 
           } 

           /** 
             *  返回毫秒 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回毫秒 
             */ 
           public  static  long  getMillis(java.util.Date  date)  { 
                       java.util.Calendar  c  =  java.util.Calendar.getInstance(); 
                       c.setTime(date); 
                       return  c.getTimeInMillis(); 
           } 

           /** 
             *  返回字符型日期 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回字符型日期 
             */ 
           public  static  String  getDate(java.util.Date  date)  { 
                       return  format(date,  "yyyy/MM/dd"); 
           } 

           /** 
             *  返回字符型时间 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回字符型时间 
             */ 
           public  static  String  getTime(java.util.Date  date)  { 
                       return  format(date,  "HH:mm:ss"); 
           } 

           /** 
             *  返回字符型日期时间 
             *   
             *  @param  date 
             *                        日期 
             *  @return  返回字符型日期时间 
             */ 
           public  static  String  getDateTime(java.util.Date  date)  { 
                       return  format(date,  "yyyy/MM/dd  HH:mm:ss"); 
           } 

           /** 
             *  日期相加 
             *   
             *  @param  date 
             *                        日期 
             *  @param  day 
             *                        天数 
             *  @return  返回相加后的日期 
             */ 
           public  static  java.util.Date  addDate(java.util.Date  date,  int  day)  { 
                       java.util.Calendar  c  =  java.util.Calendar.getInstance(); 
                       c.setTimeInMillis(getMillis(date)  +  ((long)  day)  *  24  *  3600  *  1000); 
                       return  c.getTime(); 
           } 

           /** 
             *  日期相减 
             *   
             *  @param  date 
             *                        日期 
             *  @param  date1 
             *                        日期 
             *  @return  返回相减后的日期 
             */ 
           public  static  int  diffDate(java.util.Date  date,  java.util.Date  date1)  { 
                       return  (int)  ((getMillis(date)  -  getMillis(date1))  /  (24  *  3600  *  1000)); 
           }             

我来个简单点的,也许有点用 
Calendar  now  =  Calendar.getInstance(); 
int  year  =  now.get(Calendar.YEAR); 
int  date  =  now.get(Calendar.DAY_OF_MONTH); 
int  month  =  now.get(Calendar.MONTH)  +  1; 
int  hour  =  now.get(Calendar.HOUR); 
int  min  =  now.get(Calendar.MINUTE); 
int  sec  =  now.get(Calendar.SECOND); 
在最近的一个OA中,我需要判断两个日期是否是同一周,根据一个给定的日期获得所属周的周一和周五的日期。 

在完成以上任务时,我发现Calendar  的确是一个功能强大的class。



package com.elink.util;

/*
* <p>Company: 凌科软件 www.elinksoft.com </p>
* @author liubaojun
* @version 1.0
* Created on 2004-11-29
* 来源于 elinkBSP (业务架构平台) 部分源代码
*/

import java.text.*;
import java.util.*;

public class DateUtil
{
private static final int[] dayArray = new int[]
  { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
private static SimpleDateFormat sdf = new SimpleDateFormat();

public static synchronized Calendar getCalendar()
{
  return GregorianCalendar.getInstance();
}

/**
  @return String
  */
public static synchronized String getDateMilliFormat()
{
  Calendar cal = Calendar.getInstance();
  return getDateMilliFormat( cal );
}

/**
  @param cal
  @return String
  */
public static synchronized String getDateMilliFormat( java.util.Calendar cal )
{
  String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
  return getDateFormat( cal, pattern );
}

/**
  @param date
  @return String
  */
public static synchronized String getDateMilliFormat( java.util.Date date )
{
  String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
  return getDateFormat( date, pattern );
}

/**
  @param strDate
  @return java.util.Calendar
  */
public static synchronized Calendar parseCalendarMilliFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
  return parseCalendarFormat( strDate, pattern );
}

/**
  @param strDate
  @return java.util.Date
  */
public static synchronized Date parseDateMilliFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
  return parseDateFormat( strDate, pattern );
}

/**
  @return String
  */
public static synchronized String getDateSecondFormat()
{
  Calendar cal = Calendar.getInstance();
  return getDateSecondFormat( cal );
}

/**
  @param cal
  @return String
  */
public static synchronized String getDateSecondFormat( java.util.Calendar cal )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return getDateFormat( cal, pattern );
}

/**
  @param date
  @return String
  */
public static synchronized String getDateSecondFormat( java.util.Date date )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return getDateFormat( date, pattern );
}

/**
  @param strDate
  @return java.util.Calendar
  */
public static synchronized Calendar parseCalendarSecondFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return parseCalendarFormat( strDate, pattern );
}

/**
  @param strDate
  @return java.util.Date
  */
public static synchronized Date parseDateSecondFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return parseDateFormat( strDate, pattern );
}

/**
  @return String
  */
public static synchronized String getDateMinuteFormat()
{
  Calendar cal = Calendar.getInstance();
  return getDateMinuteFormat( cal );
}

/**
  @param cal
  @return String
  */
public static synchronized String getDateMinuteFormat( java.util.Calendar cal )
{
  String pattern = "yyyy-MM-dd HH:mm";
  return getDateFormat( cal, pattern );
}

/**
  @param date
  @return String
  */
public static synchronized String getDateMinuteFormat( java.util.Date date )
{
  String pattern = "yyyy-MM-dd HH:mm";
  return getDateFormat( date, pattern );
}

/**
  @param strDate
  @return java.util.Calendar
  */
public static synchronized Calendar parseCalendarMinuteFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm";
  return parseCalendarFormat( strDate, pattern );
}

/**
  @param strDate
  @return java.util.Date
  */
public static synchronized Date parseDateMinuteFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm";
  return parseDateFormat( strDate, pattern );
}

/**
  @return String
  */
public static synchronized String getDateDayFormat()
{
  Calendar cal = Calendar.getInstance();
  return getDateDayFormat( cal );
}

/**
  @param cal
  @return String
  */
public static synchronized String getDateDayFormat( java.util.Calendar cal )
{
  String pattern = "yyyy-MM-dd";
  return getDateFormat( cal, pattern );
}

/**
  @param date
  @return String
  */
public static synchronized String getDateDayFormat( java.util.Date date )
{
  String pattern = "yyyy-MM-dd";
  return getDateFormat( date, pattern );
}

/**
  @param strDate
  @return java.util.Calendar
  */
public static synchronized Calendar parseCalendarDayFormat( String strDate )
{
  String pattern = "yyyy-MM-dd";
  return parseCalendarFormat( strDate, pattern );
}

/**
  @param strDate
  @return java.util.Date
  */
public static synchronized Date parseDateDayFormat( String strDate )
{
  String pattern = "yyyy-MM-dd";
  return parseDateFormat( strDate, pattern );
}

/**
  @return String
  */
public static synchronized String getDateFileFormat()
{
  Calendar cal = Calendar.getInstance();
  return getDateFileFormat( cal );
}

/**
  @param cal
  @return String
  */
public static synchronized String getDateFileFormat( java.util.Calendar cal )
{
  String pattern = "yyyy-MM-dd_HH-mm-ss";
  return getDateFormat( cal, pattern );
}

/**
  @param date
  @return String
  */
public static synchronized String getDateFileFormat( java.util.Date date )
{
  String pattern = "yyyy-MM-dd_HH-mm-ss";
  return getDateFormat( date, pattern );
}

/**
  @param strDate
  @return java.util.Calendar
  */
public static synchronized Calendar parseCalendarFileFormat( String strDate )
{
  String pattern = "yyyy-MM-dd_HH-mm-ss";
  return parseCalendarFormat( strDate, pattern );
}

/**
  @param strDate
  @return java.util.Date
  */
public static synchronized Date parseDateFileFormat( String strDate )
{
  String pattern = "yyyy-MM-dd_HH-mm-ss";
  return parseDateFormat( strDate, pattern );
}

/**
  @return String
  */
public static synchronized String getDateW3CFormat()
{
  Calendar cal = Calendar.getInstance();
  return getDateW3CFormat( cal );
}

/**
  @param cal
  @return String
  */
public static synchronized String getDateW3CFormat( java.util.Calendar cal )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return getDateFormat( cal, pattern );
}

/**
  @param date
  @return String
  */
public static synchronized String getDateW3CFormat( java.util.Date date )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return getDateFormat( date, pattern );
}

/**
  @param strDate
  @return java.util.Calendar
  */
public static synchronized Calendar parseCalendarW3CFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return parseCalendarFormat( strDate, pattern );
}

/**
  @param strDate
  @return java.util.Date
  */
public static synchronized Date parseDateW3CFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return parseDateFormat( strDate, pattern );
}

/**
  @param cal
  @return String
  */
public static synchronized String getDateFormat( java.util.Calendar cal )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return getDateFormat( cal, pattern );
}

/**
  @param date
  @return String
  */
public static synchronized String getDateFormat( java.util.Date date )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return getDateFormat( date, pattern );
}

/**
  @param strDate
  @return java.util.Calendar
  */
public static synchronized Calendar parseCalendarFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return parseCalendarFormat( strDate, pattern );
}

/**
  @param strDate
  @return java.util.Date
  */
public static synchronized Date parseDateFormat( String strDate )
{
  String pattern = "yyyy-MM-dd HH:mm:ss";
  return parseDateFormat( strDate, pattern );
}

/**
  @param cal
  @param pattern
  @return String
  */
public static synchronized String getDateFormat( java.util.Calendar cal, String pattern )
{
  return getDateFormat( cal.getTime(), pattern );
}

/**
  @param date
  @param pattern
  @return String
  */
public static synchronized String getDateFormat( java.util.Date date, String pattern )
{
  synchronized ( sdf )
  {
   String str = null;
   sdf.applyPattern( pattern );
   str = sdf.format( date );
   return str;
  }
}

/**
  @param strDate
  @param pattern
  @return java.util.Calendar
  */
public static synchronized Calendar parseCalendarFormat( String strDate, String pattern )
{
  synchronized ( sdf )
  {
   Calendar cal = null;
   sdf.applyPattern( pattern );
   try
   {
    sdf.parse( strDate );
    cal = sdf.getCalendar();
   }
   catch ( Exception e )
   {
   }
   return cal;
  }
}

/**
  @param strDate
  @param pattern
  @return java.util.Date
  */
public static synchronized Date parseDateFormat( String strDate, String pattern )
{
  synchronized ( sdf )
  {
   Date date = null;
   sdf.applyPattern( pattern );
   try
   {
    date = sdf.parse( strDate );
   }
   catch ( Exception e )
   {
   }
   return date;
  }
}

public static synchronized int getLastDayOfMonth( int month )
{
  if ( month < 1 || month > 12 )
  {
   return -1;
  }
  int retn = 0;
  if ( month == 2 )
  {
   if ( isLeapYear() )
   {
    retn = 29;
   }
   else
   {
    retn = dayArray[month - 1];
   }
  }
  else
  {
   retn = dayArray[month - 1];
  }
  return retn;
}

public static synchronized int getLastDayOfMonth( int year, int month )
{
  if ( month < 1 || month > 12 )
  {
   return -1;
  }
  int retn = 0;
  if ( month == 2 )
  {
   if ( isLeapYear( year ) )
   {
    retn = 29;
   }
   else
   {
    retn = dayArray[month - 1];
   }
  }
  else
  {
   retn = dayArray[month - 1];
  }
  return retn;
}

public static synchronized boolean isLeapYear()
{
  Calendar cal = Calendar.getInstance();
  int year = cal.get( Calendar.YEAR );
  return isLeapYear( year );
}

public static synchronized boolean isLeapYear( int year )
{
  /**
   * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
   * 3.能被4整除同时能被100整除则不是闰年
   */
  if ( ( year % 400 ) == 0 )
   return true;
  else if ( ( year % 4 ) == 0 )
  {
   if ( ( year % 100 ) == 0 )
    return false;
   else return true;
  }
  else return false;
}

/**
  * 判断指定日期的年份是否是闰年
  *
  * @param date
  *            指定日期。
  * @return 是否闰年
  */
public static synchronized boolean isLeapYear( java.util.Date date )
{
  /**
   * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
   * 3.能被4整除同时能被100整除则不是闰年
   */
//  int year = date.getYear();
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  int year = gc.get( Calendar.YEAR );
  return isLeapYear( year );
}

public static synchronized boolean isLeapYear( java.util.Calendar gc )
{
  /**
   * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
   * 3.能被4整除同时能被100整除则不是闰年
   */
  int year = gc.get( Calendar.YEAR );
  return isLeapYear( year );
}

/**
  * 得到指定日期的前一个工作日
  *
  * @param date
  *            指定日期。
  * @return 指定日期的前一个工作日
  */
public static synchronized java.util.Date getPreviousWeekDay(
  java.util.Date date )
{
  {
   /**
    * 详细设计:
    * 1.如果date是星期日,则减3天
    * 2.如果date是星期六,则减2天
    * 3.否则减1天
    */
   GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
   gc.setTime( date );
   return getPreviousWeekDay( gc );
//   switch ( gc.get( Calendar.DAY_OF_WEEK ) )
//   {
//    case ( Calendar.MONDAY    ):
//     gc.add( Calendar.DATE, -3 );
//     break;
//    case ( Calendar.SUNDAY    ):
//     gc.add( Calendar.DATE, -2 );
//     break;
//    default:
//     gc.add( Calendar.DATE, -1 );
//     break;
//   }
//   return gc.getTime();
  }
}

public static synchronized java.util.Date getPreviousWeekDay(
  java.util.Calendar gc )
{
  {
   /**
    * 详细设计:
    * 1.如果date是星期日,则减3天
    * 2.如果date是星期六,则减2天
    * 3.否则减1天
    */
   switch ( gc.get( Calendar.DAY_OF_WEEK ) )
   {
    case ( Calendar.MONDAY    ):
     gc.add( Calendar.DATE, -3 );
     break;
    case ( Calendar.SUNDAY    ):
     gc.add( Calendar.DATE, -2 );
     break;
    default:
     gc.add( Calendar.DATE, -1 );
     break;
   }
   return gc.getTime();
  }
}

/**
  * 得到指定日期的后一个工作日
  *
  * @param date
  *            指定日期。
  * @return 指定日期的后一个工作日
  */
public static synchronized java.util.Date getNextWeekDay(
  java.util.Date date )
{
  /**
   * 详细设计:
   * 1.如果date是星期五,则加3天
   * 2.如果date是星期六,则加2天
   * 3.否则加1天
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  {
   case ( Calendar.FRIDAY    ):
    gc.add( Calendar.DATE, 3 );
    break;
   case ( Calendar.SATURDAY    ):
    gc.add( Calendar.DATE, 2 );
    break;
   default:
    gc.add( Calendar.DATE, 1 );
    break;
  }
  return gc.getTime();
}

public static synchronized java.util.Calendar getNextWeekDay(
  java.util.Calendar gc )
{
  /**
   * 详细设计:
   * 1.如果date是星期五,则加3天
   * 2.如果date是星期六,则加2天
   * 3.否则加1天
   */
  switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  {
   case ( Calendar.FRIDAY    ):
    gc.add( Calendar.DATE, 3 );
    break;
   case ( Calendar.SATURDAY    ):
    gc.add( Calendar.DATE, 2 );
    break;
   default:
    gc.add( Calendar.DATE, 1 );
    break;
  }
  return gc;
}

/**
  * 取得指定日期的下一个月的最后一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的下一个月的最后一天
  */
public static synchronized java.util.Date getLastDayOfNextMonth(
  java.util.Date date )
{
  /**
   * 详细设计:
   * 1.调用getNextMonth设置当前时间
   * 2.以1为基础,调用getLastDayOfMonth
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  gc.setTime( DateUtil.getNextMonth( gc.getTime() ) );
  gc.setTime( DateUtil.getLastDayOfMonth( gc.getTime() ) );
  return gc.getTime();
}

/**
  * 取得指定日期的下一个星期的最后一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的下一个星期的最后一天
  */
public static synchronized java.util.Date getLastDayOfNextWeek(
  java.util.Date date )
{
  /**
   * 详细设计:
   * 1.调用getNextWeek设置当前时间
   * 2.以1为基础,调用getLastDayOfWeek
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  gc.setTime( DateUtil.getNextWeek( gc.getTime() ) );
  gc.setTime( DateUtil.getLastDayOfWeek( gc.getTime() ) );
  return gc.getTime();
}

/**
  * 取得指定日期的下一个月的第一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的下一个月的第一天
  */
public static synchronized java.util.Date getFirstDayOfNextMonth(
  java.util.Date date )
{
  /**
   * 详细设计:
   * 1.调用getNextMonth设置当前时间
   * 2.以1为基础,调用getFirstDayOfMonth
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  gc.setTime( DateUtil.getNextMonth( gc.getTime() ) );
  gc.setTime( DateUtil.getFirstDayOfMonth( gc.getTime() ) );
  return gc.getTime();
}

public static synchronized java.util.Calendar getFirstDayOfNextMonth(
  java.util.Calendar gc )
{
  /**
   * 详细设计:
   * 1.调用getNextMonth设置当前时间
   * 2.以1为基础,调用getFirstDayOfMonth
   */
  gc.setTime( DateUtil.getNextMonth( gc.getTime() ) );
  gc.setTime( DateUtil.getFirstDayOfMonth( gc.getTime() ) );
  return gc;
}

/**
  * 取得指定日期的下一个星期的第一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的下一个星期的第一天
  */
public static synchronized java.util.Date getFirstDayOfNextWeek(
  java.util.Date date )
{
  /**
   * 详细设计:
   * 1.调用getNextWeek设置当前时间
   * 2.以1为基础,调用getFirstDayOfWeek
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  gc.setTime( DateUtil.getNextWeek( gc.getTime() ) );
  gc.setTime( DateUtil.getFirstDayOfWeek( gc.getTime() ) );
  return gc.getTime();
}

public static synchronized java.util.Calendar getFirstDayOfNextWeek(
  java.util.Calendar gc )
{
  /**
   * 详细设计:
   * 1.调用getNextWeek设置当前时间
   * 2.以1为基础,调用getFirstDayOfWeek
   */
  gc.setTime( DateUtil.getNextWeek( gc.getTime() ) );
  gc.setTime( DateUtil.getFirstDayOfWeek( gc.getTime() ) );
  return gc;
}

/**
  * 取得指定日期的下一个月
  *
  * @param date
  *            指定日期。
  * @return 指定日期的下一个月
  */
public static synchronized java.util.Date getNextMonth( java.util.Date date )
{
  /**
   * 详细设计:
   * 1.指定日期的月份加1
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  gc.add( Calendar.MONTH, 1 );
  return gc.getTime();
}

public static synchronized java.util.Calendar getNextMonth( java.util.Calendar gc )
{
  /**
   * 详细设计:
   * 1.指定日期的月份加1
   */
  gc.add( Calendar.MONTH, 1 );
  return gc;
}

/**
  * 取得指定日期的下一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的下一天
  */
public static synchronized java.util.Date getNextDay( java.util.Date date )
{
  /**
   * 详细设计: 1.指定日期加1天
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  gc.add( Calendar.DATE, 1 );
  return gc.getTime();
}

public static synchronized java.util.Calendar getNextDay( java.util.Calendar gc )
{
  /**
   * 详细设计: 1.指定日期加1天
   */
  gc.add( Calendar.DATE, 1 );
  return gc;
}

/**
  * 取得指定日期的下一个星期
  *
  * @param date
  *            指定日期。
  * @return 指定日期的下一个星期
  */
public static synchronized java.util.Date getNextWeek( java.util.Date date )
{
  /**
   * 详细设计:
   * 1.指定日期加7天
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  gc.add( Calendar.DATE, 7 );
  return gc.getTime();
}

public static synchronized java.util.Calendar getNextWeek( java.util.Calendar gc )
{
  /**
   * 详细设计:
   * 1.指定日期加7天
   */
  gc.add( Calendar.DATE, 7 );
  return gc;
}

/**
  * 取得指定日期的所处星期的最后一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的所处星期的最后一天
  */
public static synchronized java.util.Date getLastDayOfWeek(
  java.util.Date date )
{
  /**
   * 详细设计:
   * 1.如果date是星期日,则加6天
   * 2.如果date是星期一,则加5天
   * 3.如果date是星期二,则加4天
   * 4.如果date是星期三,则加3天
   * 5.如果date是星期四,则加2天
   * 6.如果date是星期五,则加1天
   * 7.如果date是星期六,则加0天
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  {
   case ( Calendar.SUNDAY  ):
    gc.add( Calendar.DATE, 6 );
    break;
   case ( Calendar.MONDAY  ):
    gc.add( Calendar.DATE, 5 );
    break;
   case ( Calendar.TUESDAY  ):
    gc.add( Calendar.DATE, 4 );
    break;
   case ( Calendar.WEDNESDAY  ):
    gc.add( Calendar.DATE, 3 );
    break;
   case ( Calendar.THURSDAY  ):
    gc.add( Calendar.DATE, 2 );
    break;
   case ( Calendar.FRIDAY  ):
    gc.add( Calendar.DATE, 1 );
    break;
   case ( Calendar.SATURDAY  ):
    gc.add( Calendar.DATE, 0 );
    break;
  }
  return gc.getTime();
}

/**
  * 取得指定日期的所处星期的第一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的所处星期的第一天
  */
public static synchronized java.util.Date getFirstDayOfWeek(
  java.util.Date date )
{
  /**
   * 详细设计:
   * 1.如果date是星期日,则减0天
   * 2.如果date是星期一,则减1天
   * 3.如果date是星期二,则减2天
   * 4.如果date是星期三,则减3天
   * 5.如果date是星期四,则减4天
   * 6.如果date是星期五,则减5天
   * 7.如果date是星期六,则减6天
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  {
   case ( Calendar.SUNDAY  ):
    gc.add( Calendar.DATE, 0 );
    break;
   case ( Calendar.MONDAY  ):
    gc.add( Calendar.DATE, -1 );
    break;
   case ( Calendar.TUESDAY  ):
    gc.add( Calendar.DATE, -2 );
    break;
   case ( Calendar.WEDNESDAY  ):
    gc.add( Calendar.DATE, -3 );
    break;
   case ( Calendar.THURSDAY  ):
    gc.add( Calendar.DATE, -4 );
    break;
   case ( Calendar.FRIDAY  ):
    gc.add( Calendar.DATE, -5 );
    break;
   case ( Calendar.SATURDAY  ):
    gc.add( Calendar.DATE, -6 );
    break;
  }
  return gc.getTime();
}

public static synchronized java.util.Calendar getFirstDayOfWeek(
  java.util.Calendar gc )
{
  /**
   * 详细设计:
   * 1.如果date是星期日,则减0天
   * 2.如果date是星期一,则减1天
   * 3.如果date是星期二,则减2天
   * 4.如果date是星期三,则减3天
   * 5.如果date是星期四,则减4天
   * 6.如果date是星期五,则减5天
   * 7.如果date是星期六,则减6天
   */
  switch ( gc.get( Calendar.DAY_OF_WEEK ) )
  {
   case ( Calendar.SUNDAY  ):
    gc.add( Calendar.DATE, 0 );
    break;
   case ( Calendar.MONDAY  ):
    gc.add( Calendar.DATE, -1 );
    break;
   case ( Calendar.TUESDAY  ):
    gc.add( Calendar.DATE, -2 );
    break;
   case ( Calendar.WEDNESDAY  ):
    gc.add( Calendar.DATE, -3 );
    break;
   case ( Calendar.THURSDAY  ):
    gc.add( Calendar.DATE, -4 );
    break;
   case ( Calendar.FRIDAY  ):
    gc.add( Calendar.DATE, -5 );
    break;
   case ( Calendar.SATURDAY  ):
    gc.add( Calendar.DATE, -6 );
    break;
  }
  return gc;
}

/**
  * 取得指定日期的所处月份的最后一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的所处月份的最后一天
  */
public static synchronized java.util.Date getLastDayOfMonth(
  java.util.Date date )
{
  /**
   * 详细设计:
   * 1.如果date在1月,则为31日
   * 2.如果date在2月,则为28日
   * 3.如果date在3月,则为31日
   * 4.如果date在4月,则为30日
   * 5.如果date在5月,则为31日
   * 6.如果date在6月,则为30日
   * 7.如果date在7月,则为31日
   * 8.如果date在8月,则为31日
   * 9.如果date在9月,则为30日
   * 10.如果date在10月,则为31日
   * 11.如果date在11月,则为30日
   * 12.如果date在12月,则为31日
   * 1.如果date在闰年的2月,则为29日
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  switch ( gc.get( Calendar.MONTH ) )
  {
   case 0:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 1:
    gc.set( Calendar.DAY_OF_MONTH, 28 );
    break;
   case 2:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 3:
    gc.set( Calendar.DAY_OF_MONTH, 30 );
    break;
   case 4:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 5:
    gc.set( Calendar.DAY_OF_MONTH, 30 );
    break;
   case 6:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 7:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 8:
    gc.set( Calendar.DAY_OF_MONTH, 30 );
    break;
   case 9:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 10:
    gc.set( Calendar.DAY_OF_MONTH, 30 );
    break;
   case 11:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
  }
  //检查闰年
  if ( ( gc.get( Calendar.MONTH ) == Calendar.FEBRUARY )
   && ( isLeapYear( gc.get( Calendar.YEAR ) ) ) )
  {
   gc.set( Calendar.DAY_OF_MONTH, 29 );
  }
  return gc.getTime();
}

public static synchronized java.util.Calendar getLastDayOfMonth(
  java.util.Calendar gc )
{
  /**
   * 详细设计:
   * 1.如果date在1月,则为31日
   * 2.如果date在2月,则为28日
   * 3.如果date在3月,则为31日
   * 4.如果date在4月,则为30日
   * 5.如果date在5月,则为31日
   * 6.如果date在6月,则为30日
   * 7.如果date在7月,则为31日
   * 8.如果date在8月,则为31日
   * 9.如果date在9月,则为30日
   * 10.如果date在10月,则为31日
   * 11.如果date在11月,则为30日
   * 12.如果date在12月,则为31日
   * 1.如果date在闰年的2月,则为29日
   */
  switch ( gc.get( Calendar.MONTH ) )
  {
   case 0:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 1:
    gc.set( Calendar.DAY_OF_MONTH, 28 );
    break;
   case 2:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 3:
    gc.set( Calendar.DAY_OF_MONTH, 30 );
    break;
   case 4:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 5:
    gc.set( Calendar.DAY_OF_MONTH, 30 );
    break;
   case 6:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 7:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 8:
    gc.set( Calendar.DAY_OF_MONTH, 30 );
    break;
   case 9:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
   case 10:
    gc.set( Calendar.DAY_OF_MONTH, 30 );
    break;
   case 11:
    gc.set( Calendar.DAY_OF_MONTH, 31 );
    break;
  }
  //检查闰年
  if ( ( gc.get( Calendar.MONTH ) == Calendar.FEBRUARY )
   && ( isLeapYear( gc.get( Calendar.YEAR ) ) ) )
  {
   gc.set( Calendar.DAY_OF_MONTH, 29 );
  }
  return gc;
}

/**
  * 取得指定日期的所处月份的第一天
  *
  * @param date
  *            指定日期。
  * @return 指定日期的所处月份的第一天
  */
public static synchronized java.util.Date getFirstDayOfMonth( java.util.Date date )
{
  /**
   * 详细设计: 1.设置为1号
   */
  GregorianCalendar gc = ( GregorianCalendar ) Calendar.getInstance();
  gc.setTime( date );
  gc.set( Calendar.DAY_OF_MONTH, 1 );
  return gc.getTime();
}

public static synchronized java.util.Calendar getFirstDayOfMonth( java.util.Calendar gc )
{
  /**
   * 详细设计: 1.设置为1号
   */
  gc.set( Calendar.DAY_OF_MONTH, 1 );
  return gc;
}

/**
  * 将日期对象转换成为指定ORA日期、时间格式的字符串形式。如果日期对象为空,返回 一个空字符串对象,而不是一个空对象。
  *
  * @param theDate
  *            将要转换为字符串的日期对象。
  * @param hasTime
  *            如果返回的字符串带时间则为true
  * @return 转换的结果
  */
public static synchronized String toOraString( Date theDate, boolean hasTime )
{
  /**
   * 详细设计:
   * 1.如果有时间,则设置格式为getOraDateTimeFormat()的返回值
   * 2.否则设置格式为getOraDateFormat()的返回值
   * 3.调用toString(Date theDate, DateFormat
   * theDateFormat)
   */
  DateFormat theFormat;
  if ( hasTime )
  {
   theFormat = getOraDateTimeFormat();
  }
  else
  {
   theFormat = getOraDateFormat();
  }
  return toString( theDate, theFormat );
}

/**
  * 将日期对象转换成为指定日期、时间格式的字符串形式。如果日期对象为空,返回 一个空字符串对象,而不是一个空对象。
  *
  * @param theDate
  *            将要转换为字符串的日期对象。
  * @param hasTime
  *            如果返回的字符串带时间则为true
  * @return 转换的结果
  */
public static synchronized String toString( Date theDate, boolean hasTime )
{
  /**
   * 详细设计:
   * 1.如果有时间,则设置格式为getDateTimeFormat的返回值
   * 2.否则设置格式为getDateFormat的返回值
   * 3.调用toString(Date theDate, DateFormat theDateFormat)
   */
  DateFormat theFormat;
  if ( hasTime )
  {
   theFormat = getDateTimeFormat();
  }
  else
  {
   theFormat = getDateFormat();
  }
  return toString( theDate, theFormat );
}

/**
  * 标准日期格式
  */
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
  "MM/dd/yyyy" );
/**
  * 标准时间格式
  */
private static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat(
  "MM/dd/yyyy HH:mm" );
/**
  * 带时分秒的标准时间格式
  */
private static final SimpleDateFormat DATE_TIME_EXTENDED_FORMAT = new SimpleDateFormat(
  "MM/dd/yyyy HH:mm:ss" );
/**
  * ORA标准日期格式
  */
private static final SimpleDateFormat ORA_DATE_FORMAT = new SimpleDateFormat(
  "yyyyMMdd" );
/**
  * ORA标准时间格式
  */
private static final SimpleDateFormat ORA_DATE_TIME_FORMAT = new SimpleDateFormat(
  "yyyyMMddHHmm" );
/**
  * 带时分秒的ORA标准时间格式
  */
private static final SimpleDateFormat ORA_DATE_TIME_EXTENDED_FORMAT = new SimpleDateFormat(
  "yyyyMMddHHmmss" );

/**
  * 创建一个标准日期格式的克隆
  *
  * @return 标准日期格式的克隆
  */
public static synchronized DateFormat getDateFormat()
{
  /**
   * 详细设计: 1.返回DATE_FORMAT
   */
  SimpleDateFormat theDateFormat = ( SimpleDateFormat )
   DATE_FORMAT.clone();
  theDateFormat.setLenient( false );
  return theDateFormat;
}

/**
  * 创建一个标准时间格式的克隆
  *
  * @return 标准时间格式的克隆
  */
public static synchronized DateFormat getDateTimeFormat()
{
  /**
   * 详细设计: 1.返回DATE_TIME_FORMAT
   */
  SimpleDateFormat theDateTimeFormat = ( SimpleDateFormat ) DATE_TIME_FORMAT
   .clone();
  theDateTimeFormat.setLenient( false );
  return theDateTimeFormat;
}

/**
  * 创建一个标准ORA日期格式的克隆
  *
  * @return 标准ORA日期格式的克隆
  */
public static synchronized DateFormat getOraDateFormat()
{
  /**
   * 详细设计: 1.返回ORA_DATE_FORMAT
   */
  SimpleDateFormat theDateFormat = ( SimpleDateFormat ) ORA_DATE_FORMAT
   .clone();
  theDateFormat.setLenient( false );
  return theDateFormat;
}

/**
  * 创建一个标准ORA时间格式的克隆
  *
  * @return 标准ORA时间格式的克隆
  */
public static synchronized DateFormat getOraDateTimeFormat()
{
  /**
   * 详细设计: 1.返回ORA_DATE_TIME_FORMAT
   */
  SimpleDateFormat theDateTimeFormat = ( SimpleDateFormat )
   ORA_DATE_TIME_FORMAT.clone();
  theDateTimeFormat.setLenient( false );
  return theDateTimeFormat;
}

/**
  * 将一个日期对象转换成为指定日期、时间格式的字符串。 如果日期对象为空,返回一个空字符串,而不是一个空对象。
  *
  * @param theDate
  *            要转换的日期对象
  * @param theDateFormat
  *            返回的日期字符串的格式
  * @return 转换结果
  */
public static synchronized String toString( Date theDate,
  DateFormat theDateFormat )
{
  /**
   * 详细设计:
   * 1.theDate为空,则返回""
   * 2.否则使用theDateFormat格式化
   */
  if ( theDate == null )
   return "";
  return theDateFormat.format( theDate );
}
}




java日期操作 及 Timer定时器
2006-11-15 17:17
作者:罗代均,ldj_work#126.com ,转载请保持完整性.

转自:http://hi.baidu.com/luodaijun/blog/item/304d19174ecefb014a90a79b.html

1.基础

    Date,这个大家都认识了,用于保存日期信息,但不推荐进行日期操作及初始化特定日期

     Calendar及其子类GregorianCalendar:日历类,日期操作,初始化特定日期。

    DateFormat及其子类SimpleDateformat: 日期格式化,日期的默认显示方式不适合中国人,所以需要格式化为中国人常用的格式来显示。

    取得当期日期,  Date date=new Date();

    初始化特定日期:假设我们要得到日期为2006-10-27日的对象,需要按如下方式获得。

         Calendar cal = new  GregorianCalendar(2006, 9, 27,0,0,0);
         Date date = cal.getTime();

     注意:date,getTime()取得的是当期时间的毫秒数,月份比实际的减1

      GregorianCalendar构造方法参数依次为:年,月-1,日,小时,分,秒    

    格式化为我们熟悉的方式显示:

          DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH;mm:ss");
          String chinesedate = format.format(date);

   日期 年,月,日,分,秒的取得

          Calendar cal = Calendar.getInstance();

          int year = cal.get(Calendar.YEAR);

          int month=cal.get(Calendar.MONTH)+1;

          int day = cal.get(Calendar.DAY_OF_MONTH);

           int hour = cal.get(Calendar.HOUR_OF_DAY);

          int  minute = cal.get(Calendar.MINUTE);

           int second = cal.get(Calendar.SECOND);

           注意:月份,实际的月份要比Clendar得到的加1,因为java月份是从0~11

2.日期基本操作

   得到两个日期相差的天数

    Date endDate=..

    Date startDate = ...

   相差天数 int days=(int) ((endDate.getTime()-startDate.getTime())/(1000*24*60*60)+0.5);

   得到某个月的天数

    Calendar cal = Calendar.getInstance();

   int month=cal.getActualMaximum(Calendar.DAY_OF_MONTH);

   日期加1天

    cal.add(Calendar.DATE, 1);//日期加1天

    Calendar.YEAR,Calendar.MONTH,Calendar.WEEK_OF_YEAR),分别是年,月,周

3,java.sql,Date()和java.util.Date();

    前面我们说的都是java.util.Date类,java.sql.Date类是操作数据库用的日期类型

   java.util.Date date=....

    java.sql.Date sqldate=new java.sql.Date(date.getTime());

   也可以这样:String date="2005-11-10";

    java.sql.Date sqlDate=java.sql.Date.valueOf(date);

4,定时器

   a,编写类,实现TimeTask接口,定时执行的代码写入run()方法中

   b.  timer.schedule(TimeTask子类对象, 开始执行的日期, 周期);

   周期为毫秒数

  例子:

  类MyTask:

import java.util.*;

public class MyTask extends TimerTask {
    public void run() {
        System.out.println("MyTask 正在执行...");
    }
}

  类TimerDemo:

import java.util.Timer;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Date;

public class TimerDemo {
    public static void main(String[] args) {
        Timer timer = new Timer();
        MyTask task = new MyTask();
        Calendar cal = new GregorianCalendar(2006, 9, 28, 12, 49, 0);
        Date date = cal.getTime();
        System.out.println("date :" + date.toLocaleString());
        timer.schedule(task, date, 1000);
    }
}

===================================

将Date类型写入数据库的两种方法
先了解几个类:
1、具体类(和抽象类相对)java.util.Date 
2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat 
3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar 
具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类.

************************************
一种将java的日期类型直接转换为SQL的日期类型的方法,比较简单但适用性狭窄,
注意一下例子在jdk下编译没有时间,但在jb和Eclipse下就有时间,不知怎么回事

——————————————
public class a {

public static void main(String[] args) {
 
  java.util.Date now = new Date();
  //PreparedStatement类型的setDate方法只接受sql.date类型,所有必须先转换
  java.sql.Date sqlnow = new java.sql.Date(now.getTime());
   try {
    //froName必须放在try中,否则编译不通过,可能froName方法抛出编译时异常了
    //经查阅 public static Class forName(String className) throws     ClassNotFoundException {...}
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    Connection connection = DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.0.2:1433;DatabaseName=pubs","sa","");
    PreparedStatement ps=connection.prepareStatement("update test set f1=?");
    ps.setDate(1,sqlnow);
    int i = ps.executeUpdate();
   }
    catch (Exception ex) {}

}
}
**********************************************************
另一种是将java的date类型通过SimpleDateFormat转换为字符串,再写到sql语句中
-----------------------------------------------------------
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class a{
  public static void main(String[] args) {
  //之所以用kk而不用hh是因为kk是24进制的而不虽操作系统设置变动
  SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
  Date now = new Date();
  //format()方法的返回值是String型
  System.out.println(sdf.format(date));
}}

-----------------------------------------------------
一下是逆操作,将String转换为Date,parse()方法能抛出ParseException异常,所以你必须使用适当的异常处理技术
try{
    SimpleDateFormat sbf =new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    String sdate="2004-05-14 21:29:51";
    Date ddate = sbf.parse(sdate);
    System.out.println(ddate);
    }
catch (Exception ex) { }
**************************************************************
以下是副产品,我们用到的情况比较少
util.date类型
----------------------------------------------
   //1年前日期
   java.util.Date myDate=new java.util.Date(); 
   long myTime=(myDate.getTime()/1000)-60*60*24*365;
   myDate.setTime(myTime*1000);
   //明天日期
   myDate=new java.util.Date();
   myTime=(myDate.getTime()/1000)+60*60*24;
   myDate.setTime(myTime*1000);
  //两个时间之间的天数
   SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
   java.util.Date date= myFormatter.parse("2003-05-1");
   java.util.Date mydate= myFormatter.parse("1899-12-30");
   long  day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
   //加半小时
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
   java.util.Date date1 = format.parse("2002-02-28 23:16:00");
   long Time=(date1.getTime()/1000)+60*30;
   date1.setTime(Time*1000);
   String mydate1=formatter.format(date1);
   //年月周求日期
   SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
   java.util.Date date2= formatter2.parse("2003-05 5 星期五");
   SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
   String mydate2=formatter3.format(date2);
   //求是星期几
   mydate= myFormatter.parse("2001-1-1");
   SimpleDateFormat formatter4 = new SimpleDateFormat("E");
   String mydate3=formatter4.format(mydate);
-----------------------------------------------
now.getYear();//实际年份减去1900,如果构造函数为Date(2008,2,25)则不减1900,如果构造函数为Date(17009456745)或者setTime(17009456745)还减1900
now.getMonth();//实际月份减去1,如果构造函数为Date(2008,2,25)则不减1,如果构造函数为Date(17009456745)或者setTime(17009456745)还减1900
now.getDay();//*,原来是取星期,不知sun公司是咋想的,脑袋进水了。
now.getDate();//这才是取1~31之间的日
now.getHours();//24进制的小时
now.getMinutes();//分
now.getSeconds();//秒
now.getTime();//返回1970年1月1日00:00:00起至今的毫秒数
now.setTime(long time);//真实日期为1970年1月1日午夜+time毫秒

*************************************
日历类型的子类GregorianCalendar类型
构造函数GregorianCalendar(int year, int month, int date) ,无参数为但前时间
注意月份的表示,一月是0,二月是1,以此类推。因此最好使用单词而不是使用数字来表示月份。父类Calendar使用常量来表示月份:JANUARY, FEBRUARY...
所以1903年12月17日可以写为
GregorianCalendar aaa = new GregorianCalendar(1903, Calendar.DECEMBER, 17)
GregorianCalendar aaa = new GregorianCalendar(1903, 11, 17);
---------------------------------------
import java.util.Date;
import java.text.DateFormat;
import java.util.GregorianCalendar;
public class a {
public static void main(String[] args) {
  DateFormat df =  DateFormat.getDateInstance(DateFormat.FULL);
  GregorianCalendar gca = new GregorianCalendar();
  //getTime()方法是将GregorianCalendar对象转换为Date对象
  gca.setTime(new Date());
  System.out.println("系统时间: " +df.format(gca.getTime()));
  //set 方法能够让我们通过简单的设置星期中的哪一天这个域来将我们的时间调整为星期五.注意到这里我们使用了常量 DAY_OF_WEEK 和 FRIDAY来增强代码的可读性.
  //如果当前为星期五时间不变
  gca.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);
  System.out.println("下一个星期五: " +  df.format(gca.getTime()));
  //add 方法让我们能够在日期上加上数值.
  gca.add(GregorianCalendar.DAY_OF_MONTH,;
  System.out.println("再加8天: " +  df.format(gca.getTime()));
  //get方法取对象中的一部分
  int i =  gca.get(GregorianCalendar.DAY_OF_MONTH);
  System.out.println(i);
}}



***************************************
Locale类:(java.util.Locale)
-----------------------------------
import java.util.Locale;
public class a {
public static void main(String[] args) {
  Locale localeEN = new Locale("en", "US");
  //另一实例化方法=locale.ENGLISH;
  System.out.println("Display Name: " +localeEN.getDisplayName());
  System.out.println("Country: " + localeEN.getCountry());
  System.out.println("Language: " + localeEN.getLanguage());

  Locale localeFR = new Locale("fr", "FR");
  System.out.println("\nDisplay Name: " +localeFR.getDisplayName());
  System.out.println("Country: " + localeFR.getCountry());
  System.out.println("Language: " + localeFR.getLanguage());

  // 用三种语言显示本机语言、英语、法语
  System.out.println("用本语显示DisplayName: "+ localeEN.getDisplayName());
  System.out.println("用英语显示DisplayName:"+   localeEN.getDisplayName(localeEN ));
  System.out.println("用法语显示DisplayName:"+   localeEN.getDisplayName(localeFR ));
}
}
*****************************************************

把Date以不同地域的格式显示:java.text.DateFormat
getDateTimeInstance()的前两个参数分别代表日期风格和时间风格,取值为SHORT, MEDIUM, LONG, 和 FULL
getDateInstance()方法:Java还提供了几个选择日期格式,你可以通过使用重载的getDateInstance(int style)获得。出于方便的原因,DateFormat提供了几种预置的常量,你可以使用这些常量参数SHORT, MEDIUM, LONG, 和FULL
-----------------------------------------------
import java.util.Locale;
import java.text.DateFormat;
import java.util.Date;
public class a {
  public static void main(String[] args) {    
    Date now=new Date();
    Locale localeCN=Locale.CHINA;
    DateFormat df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,localeCN);
    System.out.println(df.format(now));
   //结果为2004年5月17日 星期一 下午16时38分32秒 CST 
}}
******************************************************
时区 java.util.TimeZone
--------------------------------------------------------
import java.util.TimeZone;
public class a {
  public static void main(String[] args) {
  // 系统时区
  TimeZone timeZoneFL = TimeZone.getDefault();
  System.out.println("\n" + timeZoneFL.getDisplayName());
  System.out.println("与GMT相差的微秒数: " + timeZoneFL.getRawOffset());
  System.out.println("Uses daylight saving: " + timeZoneFL.useDaylightTime());
  //通过“时区字符串ID”指定时区
  TimeZone timeZoneLondon = TimeZone.getTimeZone("Europe/London");
  System.out.println("\n" + timeZoneLondon.getDisplayName());
  System.out.println("与GMT相差的微秒数: " + timeZoneLondon.getRawOffset());
  System.out.println("采用夏令时: " + timeZoneLondon.useDaylightTime());
  }}
-------------------------------------------------------
显示结果:
中国标准时间
与GMT相差的微秒数:
Uses daylight saving:false;

格林威治时间
与GMT相差的微秒数:
采用夏令时: true

********************************************************
显示不同时区的时间  df.setTimeZone(TimeZone kkk)
----------------------------------------------------
public class a {
  public static void main(String[] args) {

    Date now=new Date();
    DateFormat df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
    TimeZone timezoneCH=TimeZone.getTimeZone("China/BeiJing");
    df.setTimeZone(timezoneCH);
    System.out.println("北京时间"+df.format(now));
    TimeZone timezoneFR=TimeZone.getTimeZone("Europe/Paris");
    df.setTimeZone(timezoneFR);
    System.out.println("巴黎时间"+df.format(now));   
  }}
-----------------------------------------------------
结果如下:
北京时间2004年5月17日 星期一 上午09时31分34秒 GMT
巴黎时间2004年5月17日 星期一 上午11时31分34秒 CEST
***************************************
分享到:
评论

相关推荐

    java日期时间获取

    本文主要介绍了Java中处理日期与时间的方法,特别是通过一个示例工具类 `DateTime` 展示了如何进行日期时间的解析、格式化以及比较等操作。文章重点介绍了 `SimpleDateFormat` 类的使用方法,并通过具体的例子演示了...

    java常用工具类集合(也有转自他人的)

    3. **日期时间**:如`DateUtils`,便于日期的格式化、比较、计算等,避免了对`java.util.Date`和`java.text.SimpleDateFormat`的直接操作。 4. **IO操作**:如`IOUtils`,提供读写文件、复制流、关闭资源等便捷方法...

    Java中常用的代码汇总-WPS Office.docx

    在日期操作中,把 Java util.Date 转成 sql.Date 是非常常见的操作。Java 提供了 `java.sql.Date` 类来实现这种操作。这种方法可以帮助开发者轻松地将日期类型转换为 sql 日期类型,从而实现数据库的日期操作。 ...

    java编写的日历

    在Java编程语言中,创建一个日历应用是一个常见的学习任务,它可以帮助初学者理解面向对象编程、日期时间处理以及GUI(图形用户界面)设计。在这个项目中,我们可能涉及到以下几个核心知识点: 1. **日期时间API**...

    java实现体温单实例-eclipse-java工程

    在Eclipse中,通过导入`javax.swing.*`和`java.awt.*`库,可以创建按钮、文本框等组件,编写事件监听器处理用户的操作。 对于体温单的显示,我们可以设计一个表格组件,如JTable,用于展示体温记录。每个`...

    用java做的一个万年历

    【万年历项目详解】 万年历是一种可以显示任意年份日期、节气...通过这个项目,你可以深入理解Java日期处理、GUI编程、数据结构和算法,以及软件工程的一些实践原则。无论是学习还是实际工作,都是提升技能的好材料。

    java仓库管理系统(期末课程设计)

    3. **入库操作**:记录商品入库的信息,包括入库数量、日期、经手人等。 4. **出库操作**:处理商品出库的流程,确保出库数量正确,更新库存状态。 5. **报表与统计**:生成各种库存报告,如出入库汇总、库存变化...

    java万年历程序毕业设计

    综上所述,Java万年历程序毕业设计是一个综合性的项目,涉及到Java语言基础、图形用户界面设计、事件处理、日期时间操作、算法设计等多个方面的知识,对于提升开发者的技术能力和项目经验大有裨益。通过这个项目,...

    星座运势(java se)

    在这个项目中,我们看到一个使用Java SE开发的星座运势桌面程序,该程序允许用户查询自己的星座信息以及与他人星座的匹配程度。 1. **Java GUI基础**:这个程序很可能使用了Java的图形用户界面(GUI)库,如Swing或...

    用Java给图片添加文字或图像水印

    `java.awt`提供了绘图和图形对象的基本操作,而`javax.imageio`则用于读取、写入和处理图像。 `WaterMarkDemo.java`源代码的核心部分可能包括以下步骤: 1. **读取图像**:使用`ImageIO.read()`方法从磁盘读取原始...

    java教程.jar

    13. **Java 8及以后的更新**:Java的版本更新引入了许多新特性,如Lambda表达式、Stream API、Optional类、日期时间API等,这些都是现代Java开发的重要组成部分。 通过这个"java教程.jar",用户可以系统地学习以上...

    JAVA+JDK实例开发宝典

    Java语法简洁而严谨,学习如何声明变量、控制流程(如if语句、for循环和while循环)、创建函数以及异常处理等基本操作至关重要。 其次,JDK中的关键组件是Java编译器(javac),它将源代码转换为字节码,这是Java...

    java基础知识学习入门

    Java提供了一套丰富的API,涵盖数学、字符串处理、日期时间、网络编程等多个领域。熟悉并合理利用这些库能大大提高开发效率。 在学习过程中,实践是提升技能的关键。尝试编写小程序,解决实际问题,不断调试和优化...

    Java自学之道(完整版)

    最后,Java标准库提供了大量的类和接口,如集合框架、网络编程、XML处理、日期时间API等,熟练使用它们能大大提高开发效率。同时,熟悉Java的开发工具,如Eclipse、IntelliJ IDEA,以及版本控制系统如Git,将极大地...

    最近5年133个Java面试问题列表

    Java内存模型(JMM)规定了对`volatile long`和`volatile double`变量的读写操作是原子性的。这意味着即使在一个多处理器系统中,当一个线程正在读取一个volatile `long`变量时,其他线程不能看到该变量的中间状态。 ...

    Java实验报告模板.doc

    实验者需要在3月5日至3月25日期间,在Windows XP操作系统上,利用Java标准环境进行。 实验的主要内容分为四个部分: 1. 首先,需要仔细研究chap9_25,理解Java的Character类的规范和功能。 2. 其次,基于对...

    180个针对Java初学者的简单实例.rar

    11. **日期和时间API**:Java 8引入的新日期时间API,使得处理日期和时间更加方便。 12. **枚举与注解**:枚举类型用于定义有限的常量集合,注解则用于提供元数据,增强代码的可读性和可维护性。 13. **反射机制**...

    电子备忘录带密码保护的JAVA记事本.rar

    在描述中,“使用方便,记事管理”意味着这个JAVA记事本应用程序不仅提供了基本的文字记录功能,还可能包括了分类管理、日期标记、搜索等功能,让用户能够高效地管理和查找自己的记事内容。便捷的使用体验是其设计的...

    java课程设计报告之万年历程序设计报告

    旨在通过编程实现一个可以显示任意年份的日历程序,这对于学习Java编程的学生来说,是一个很好的实践项目,能够深入理解和运用面向对象编程、控制流、日期时间处理等核心Java技术。下面将详细阐述这个项目的各个阶段...

    Java留言板(网页)

    6. **日期和时间处理**:Java 8引入的日期时间API,用于处理和格式化时间戳。 7. **前端技术**:HTML、CSS和JavaScript,用于构建和美化用户界面,实现动态交互效果。 通过实践Java 留言板项目,开发者可以深入...

Global site tag (gtag.js) - Google Analytics