获取各种日期时间的总结

 
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import com.sinosoft.lis.pubfun.PubFun;
 
public class TimeTest {  
      
    /** 
     * @param args 
     */  
    public static void main(String[] args) {
     TimeTest tt=new TimeTest();
/*        System.out.println(TimeTest.getTwoDay("2015-01-16", "2015-01-02"));
        System.out.println(TimeTest.getWeek(new Date()));
        System.out.println(TimeTest.getCurrentWeekday(7));
        System.out.println(TimeTest.dateToStr(tt.getFirstDayOfMonth(), "yyyy-MM-dd"));
        System.out.println(TimeTest.dateToStr(tt.getLastDayOfMonth(), "yyyy-MM-dd"));
        System.out.println(TimeTest.dateToStr(tt.getFirstDayOfYear(), "yyyy-MM-dd"));*/
//        System.out.println(TimeTest.dateToStr(tt.getLastDayOfYear(), "yyyy-MM-dd"));
//        System.out.println(tt.isLeapYear("2014"));
       
  GregorianCalendar sCalendar = new GregorianCalendar();
  sCalendar.setTime(new Date());
  int sYears = sCalendar.get(Calendar.YEAR);
  int sMonths = sCalendar.get(Calendar.MONTH);
  int sDays = sCalendar.get(Calendar.DAY_OF_MONTH);
  System.out.println(sYears);
  System.out.println(sMonths);
  System.out.println(sDays);
  
    }  
      
      
    /** 
      * 得到二个日期间的间隔天数  (date1-date2)
      */  
    public static String getTwoDay(String date1, String date2) {  
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");  
        long day = 0;  
        try {  
            java.util.Date dateBefore = myFormatter.parse(date1);  
            java.util.Date dateAfter = myFormatter.parse(date2);  
            day = (dateBefore.getTime() - dateAfter.getTime()) / (24 * 60 * 60 * 1000);  
        } catch (Exception e) {  
            return "";  
        }  
        return day + "";  
    } 
     /** 
     * 得到二个日期间的间隔天数  (date1-date2)
     */  
    public static String getTwoDay(Date date1, Date date2) {  
       long day = 0;  
       try {   
           day = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000);  
       } catch (Exception e) {  
           return "";  
       }  
       return day + "";  
    } 

    /** 
        * 根据一个日期,返回是星期几的字符串 
        *  
        * @param  sdate 
        * @return 
        */  
    public static String getWeek(String sdate) {  
        // 再转换为时间  
        Date date = TimeTest.strToDate(sdate);  
        return new SimpleDateFormat("EEEE").format(date);  
    }  
    /** 
     * 根据一个日期,返回是星期几的字符串 
     *  
     * @param   sdate 
     * @return 
     */  
  public static String getWeek(Date sdate) {  
      return new SimpleDateFormat("EEEE").format(sdate);  
  }  
    /** 
        * 将短时间格式字符串转换为时间 yyyy-MM-dd  
        *  
        * @param strDate 
        * @return 
        */  
    public static Date strToDate(String strDate) {  
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");  
        ParsePosition pos = new ParsePosition(0);  
        Date strtodate = formatter.parse(strDate, pos);  
        return strtodate;  
    }  
    /** 
    * 将日期转换为特定格式的字符串
    *  
    * @param strDate 
    * @return 
    */  
 public static String dateToStr(Date date,String format) {  
     SimpleDateFormat formatter = new SimpleDateFormat(format);
     return formatter.format(date); 
 }  

 /**
  * 获得本周几的日期    
  * **/
    public static String getCurrentWeekday(int weekNum) {  
        String rDate="";
        if(weekNum>0&&weekNum<8){
       //获取今天是星期几
             Calendar c=Calendar.getInstance();
             int week= c.get(Calendar.DAY_OF_WEEK);
             if(week==1){
              week=7;
             }else{
              week--;
             }
             //获取星期weekNum的日期
             c.setTime(new Date());
             c.add(Calendar.DATE, weekNum-week);
             rDate=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
      }
         return rDate;  
    }  
   
    /**
     * 获取本月第一天,返回Date
     **/
    public Date getFirstDayOfMonth(){
     Calendar c=Calendar.getInstance();
     c.set(Calendar.DAY_OF_MONTH, 1);
        return c.getTime();  
    }
   
    /**
     * 获取本月最后一天,返回Date  
     ***/
    public Date getLastDayOfMonth(){    
       Calendar c = Calendar.getInstance();  
       c.set(Calendar.DATE,1);//设为当前月的1号  
       c.add(Calendar.MONTH,1);//加一个月,变为下月的1号  
       c.add(Calendar.DATE,-1);//减去一天,变为当月最后一天  
       return c.getTime();     
    }  
      
    /**
     * 获取本年第一天,返回Date
     **/
    public Date getFirstDayOfYear(){
     Calendar c=Calendar.getInstance();
     c.set(Calendar.DAY_OF_YEAR, 1);
        return c.getTime();  
    }
   
    /**
     * 获取本年最后一天,返回Date  
     ***/
    public Date getLastDayOfYear(){    
       Calendar c = Calendar.getInstance();  
       c.set(Calendar.DAY_OF_YEAR,1);//当年第一天
       c.add(Calendar.YEAR,1);//加一年
       c.add(Calendar.DATE,-1);//减去一天,
       return c.getTime();     
    } 
   
    /**
     *  获得本年有多少天   
     ***/
    public int getDaysOfYear(){  
        Calendar cd = Calendar.getInstance();  
        cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天  
        cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。  
        int MaxYear = cd.get(Calendar.DAY_OF_YEAR);   
        return MaxYear;
//     GregorianCalendar gc=new GregorianCalendar();
//     gc.setGregorianChange(new Date(Long.MIN_VALUE));
//     String timeNow= new SimpleDateFormat("yyyy-MM-dd").format(new Date());
//     int year=Integer.parseInt(timeNow.substring(0, 4));
//     if(gc.isLeapYear(year)){
//      return 366;
//     }else{
//      return 365;
//     }
    }  
 
    /**
     *  获得某一年有多少天   
     ***/
    public int getDaysOfYear(String strYear){  
     //这种方法有误差
//        Calendar c = Calendar.getInstance();  
//        String strDate=strYear+"-01-01";
//        ParsePosition pos = new ParsePosition(0);  
//        c.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(strDate,pos));
//        c.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。  
//        int MaxYear = c.get(Calendar.DAY_OF_YEAR);   
//        return MaxYear;  
     GregorianCalendar gc=new GregorianCalendar();
     gc.setGregorianChange(new Date(Long.MIN_VALUE));
        int year=Integer.parseInt(strYear);
     if(gc.isLeapYear(year)){
      return 366;
     }else{
      return 365;
     }
    }  
      
   /** 
    * 是否闰年 
    * @param year 年 
    * @return  
    */  
    public boolean isLeapYear(int year) {  
      //  return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); 
     GregorianCalendar gc=new GregorianCalendar();
//     设置 GregorianCalendar 的更改日期。这是发生从儒略历日期切换到格里高利历日期的点。默认时间是 1582 年 10 月 15 日(格里高利历)。在此之前,日期是按照儒略历计算的。
//     要得到纯粹的儒略历日历,可将更改日期设置为 Date(Long.MAX_VALUE)。要得到一个纯粹的格里高利历日历,可将更改日期设置为 Date(Long.MIN_VALUE)。
     gc.setGregorianChange(new Date(Long.MIN_VALUE));
     return gc.isLeapYear(year);
    } 
    /** 
     * 是否闰年 
     * @param year 年 
     * @return  
     */  
     public boolean isLeapYear(String strYear) {
      int year=Integer.parseInt(strYear);
       GregorianCalendar gc=new GregorianCalendar();
       gc.setGregorianChange(new Date(Long.MIN_VALUE));
      return gc.isLeapYear(year);
     }  
}  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值