java使用日期(轉)

今天在網上找日期的處理方法,無意找到這篇文章,感覺還不錯,就把它貼了上來。

如果想要取得系統的時間,可以使用System.currentTimeMillis()方法,例如:

DateDemo.java 
public class DateDemo 
{
    
public static void
 main(String[]
args) 
{
        System.out.println(System.currentTimeMillis());
    }

}
 


執行結果會顯示從1970年1月1日開始到取得系統時間爲止所經過的毫秒數,例如1115346430703這個數字,但這樣的數字沒有人確切瞭解它的意 義是什麼,您可以使用Date類別來讓這個數字變的更有意義一些,例如:

DateDemo.java

import
 java.util.Date;

public class DateDemo 
{
    
public static void
 main(String[]
args) 
{
        Date date 
= new
 Date();
        
        System.out.println(date.toString());
        System.out.println(date.getTime());
    }

}
 


執行的結果如下:

  Fri May 06 10:31:13 GMT+08:00 2005
  1115346673531   

當您生成Date對象時,實際上它會使用System.currentTimeMillis()來取得系統時間,而您使用
toString()方法時,會將取得的1970年1月1日至今的毫秒數轉爲dow mon dd hh:mm:ss zzz yyyy的格式,分別是:「星期 月 日 時:分:秒 公元」;使用Date的getTime()方法則可以取得毫秒數。

如果您想要對日期時間作格式設定,則可以使用DateFormat來作格式化,先來看看它的子類SimpleDateFormat如何使用:

DateDemo.java
import
 java.text.DateFormat;
import
 java.text.SimpleDateFormat;
import
 java.util.Date;

public class DateDemo 
{
    
public static void
 main(String[]
args) 
{
        Date date 
= new
 Date();

        DateFormat dateFormat 
=
 
            
new

SimpleDateFormat(
"EE-MM-dd-yyyy");
        
        System.out.println(dateFormat.format(date));
    }

}
 

執行結果:

    星期五-05-06-2005

DateFormat會依計算機上的區域設定顯示時間格式,EE表示星期,MM表示月份、dd表示日期,而yyyy是公元,每個字符的設定都各有其意義,您
可以參考 SimpleDateFormat 的API說明了解每個字符設定的意義。

您也可以直接從DateFormat指定格式生成DateFormat的實例,例如:

DateDemo.java

import
 java.text.DateFormat;
import
 java.util.Date;

public class DateDemo 
{
    
public static void
 main(String[]
args) 
{
        Date date 
= new
 Date(); 

        DateFormat shortFormat 
=
 
            DateFormat.getDateTimeInstance( 
                DateFormat.SHORT,
DateFormat.SHORT); 

        DateFormat mediumFormat 
=
 
            DateFormat.getDateTimeInstance( 
                DateFormat.MEDIUM,
DateFormat.MEDIUM); 

        DateFormat longFormat 
=
 
            DateFormat.getDateTimeInstance( 
                DateFormat.LONG, DateFormat.LONG); 

        DateFormat fullFormat 
=
 
            DateFormat.getDateTimeInstance( 
                DateFormat.FULL,
DateFormat.FULL); 

        System.out.println(shortFormat.format(date)); 
        System.out.println(mediumFormat.format(date)); 
        System.out.println(longFormat.format(date)); 
        System.out.println(fullFormat.format(date)); 
    }

}
 

在使用getDateTimeInstance()取得DateFormat實例時,可以指定的參數是日期格式與時間格式,以上所指定的格式依訊息詳細度 區分,執行結果如下:

2005/5/6 上午 10:45
2005/5/6 上午 10:45:25
2005年5月6日 上午10時45分25秒
2005年5月6日 星期五 上午10時45分25秒 GMT+08:00  

您也可以使用getDateInstance()取得DateFormat實 例,並同時指定日期的區域顯示方式,例如:

DateDemo.java     

import
 java.text.DateFormat;
import
 java.util.Date;
import
 java.util.Locale;

public class DateDemo 
{
    
public static void
 main(String[]
args) 
{
        Date date 
= new
 Date(); 

        Locale locale 
= new

Locale(
"en""US");
        DateFormat shortFormat 
=
 
            DateFormat.getDateInstance( 
                DateFormat.SHORT,
locale); 

        DateFormat mediumFormat 
=
 
            DateFormat.getDateInstance( 
                DateFormat.MEDIUM,
locale); 

        DateFormat longFormat 
=
 
            DateFormat.getDateInstance( 
                DateFormat.LONG, locale); 

        DateFormat fullFormat 
=
 
            DateFormat.getDateInstance( 
                DateFormat.FULL, locale); 

        System.out.println(shortFormat.format(date)); 
        System.out.println(mediumFormat.format(date)); 
        System.out.println(longFormat.format(date)); 
        System.out.println(fullFormat.format(date)); 
    }

}
 

這邊指定了美國的時間顯示方式,執行結果如下:


  5/6/05
  May 6, 2005
  May 6, 2005
  Friday, May 6, 2005
 

-------------------------------------------------------------------------------------------------

1. 怎樣計算兩個時間之間的間隔?
間隔=Date1.getTime()-Date2.getTime();得出來的是毫秒數.
除1000是秒,再除60是分,再除60是小時..............................

記住java標準庫中所有時間類都以此爲基礎轉化的,只是他寫好了一些
轉化的方法給你用而已.但都離不開這個毫秒數爲基礎.

2. t=Calendar.getInstance();m=t.get(t.MONTH)+1;這裏爲什麼要加一?

在java語言裏,date的month的取值範圍是:0~11,與人們的自然表達上相差1。


3. 系統時間與當前日期的區別?

系統時間確切的說應該是
System.currentTimeMillis();
new Date()是當前日期,雖然它getTime();和System.currentTimeMillis();
一樣,但System.currentTimeMillis();


4. 如何計算兩個日期的天數差值?

long beginTime = beginDate.getTime(); 
long endTime2 =
 endDate.getTime(); 
long betweenDays = (long)((endTime - beginTime) / (1000 * 60 * 60 *24+ 0.5); 

 

5. 如何比較日期時間大小?

第一種方法:
use Calendar object to compare
java.util.Calendar class can be used to compare date. In order to do this,
you guy should parse that string into int year, month, day and construct a
Calendar object, and then do comparison.

Below is a sample 

StringTokenizer token 
= new StringTokenizer(your string,"-"
); 
int year =
 Integer.parseInt(token.nextToken()); 
int month =
 Integer.parseInt(token.nextToken()); 
int day =
 Integer.parseInt(token.nextToken()); 
Calendar date 
=
 Calendar.getInstance(); 
date.set(year,month,day); 
Calendar today 
=
 Calendar.getInstacne(); 
if(date.after(today))

// 

}
 


第二種方法

Date nowDate=new Date();//當前時間/r 
long nowTime=nowDate.getTime; 
long lastTime=userTime.longValue();//以前的時間/r 
long time=nowTime-lastTime;//時間相減比較。 
if(time>(long)60000)//1分鐘{} 

另外可用以下參考
用時間戳,Date.getTime()可以把當前時間改成時間戳,
用CompareTo();
用before(),after(),equals();

6. 格式化日期的問題/r

目的:
第一次求日期

java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd"); 
String riqi
=formatter.format(currentTime_1); 


第二次求時間/r

java.text.DateFormat format1 = new java.text.SimpleDateFormat("hhmmss"); 
java.util.Date currentTime_2 
= new
 java.util.Date(); 
String shijian
=
format1.format(currentTime_2); 

得到的結果是
2002-02-19和115324(11點53分24秒)

實現:

java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd-H-mm-ss"); 
java.util.Date currentTime_1 
= new java.util.Date(); 
String str_date 
= formatter.format(currentTime_1); 
StringTokenizer token 
= new StringTokenizer(str_date,"-"); 
String year 
= token.nextToken(); 
String month
= token.nextToken(); 
String day 
= token.nextToken(); 
String hh 
= token.nextToken(); 
String mm 
= token.nextToken(); 
String ss 
= token.nextToken(); 
String riqi
=year+"年//"+month+""+day+""+" "+hh+"點//"+mm+""+ss+"秒//"
String newdir
=year+month+day; 
String wenjian 
= hh+mm+ss; 

7. 怎麼得到一個月的天數?

java.util.Calendar date = java.util.Calendar.getInstance(); 
System.out.println(date.getActualMaximum(date.DAY_OF_MONTH)); 

------------------------------------------------------------------------------------------------


取得指定月份的第一天與取得指定月份的最後一天 

       /**  
         *  取得指定月份的第一天  
         *  
         *  
@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));  
           }
              
}
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章