`
gaozzsoft
  • 浏览: 424765 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Java日期大总结

阅读更多
package com.hefeng.test; 
 
 
import java.text.DateFormat; 
import java.text.ParsePosition; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 
 
public class TimeTest { 
    //用来全局控制 上一周,本周,下一周的周数变化 
    private  int weeks = 0; 
    private int MaxDate;//一月最大天数 
    private int MaxYear;//一年最大天数 
     
     
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        TimeTest tt = new TimeTest(); 
        System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd")); 
        System.out.println("获取本周一日期:"+tt.getMondayOFWeek()); 
        System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday()); 
        System.out.println("获取上周一日期:"+tt.getPreviousWeekday()); 
        System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday()); 
        System.out.println("获取下周一日期:"+tt.getNextMonday()); 
        System.out.println("获取下周日日期:"+tt.getNextSunday()); 
        System.out.println("获得相应周的周六的日期:"+tt.getNowTime("yyyy-MM-dd")); 
        System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth()); 
        System.out.println("获取本月最后一天日期:"+tt.getDefaultDay()); 
        System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst()); 
        System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd()); 
        System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst()); 
        System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd()); 
        System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst()); 
        System.out.println("获取本年最后一天日期:"+tt.getCurrentYearEnd()); 
        System.out.println("获取去年的第一天日期:"+tt.getPreviousYearFirst()); 
        System.out.println("获取去年的最后一天日期:"+tt.getPreviousYearEnd()); 
        System.out.println("获取明年第一天日期:"+tt.getNextYearFirst()); 
        System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd()); 
        System.out.println("获取本季度第一天到最后一天:"+tt.getThisSeasonTime(11)); 
        System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"+TimeTest.getTwoDay("2008-12-1","2008-9-29")); 
    } 
     
     
    /**
        * 得到二个日期间的间隔天数
        */ 
    public static String getTwoDay(String sj1, String sj2) { 
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
        long day = 0; 
        try { 
         java.util.Date date = myFormatter.parse(sj1); 
         java.util.Date mydate = myFormatter.parse(sj2); 
         day = (date.getTime() - mydate.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); 
        Calendar c = Calendar.getInstance(); 
        c.setTime(date); 
        // int hour=c.get(Calendar.DAY_OF_WEEK); 
        // hour中存的就是星期几了,其范围 1~7 
        // 1=星期日 7=星期六,其他类推 
        return new SimpleDateFormat("EEEE").format(c.getTime()); 
    } 
 
    /**
        * 将短时间格式字符串转换为时间 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 date1
        * @param date2
        * @return
        */ 
    public static long getDays(String date1, String date2) { 
        if (date1 == null || date1.equals("")) 
         return 0; 
        if (date2 == null || date2.equals("")) 
         return 0; 
        // 转换为标准时间 
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
        java.util.Date date = null; 
        java.util.Date mydate = null; 
        try { 
         date = myFormatter.parse(date1); 
         mydate = myFormatter.parse(date2); 
        } catch (Exception e) { 
        } 
        long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); 
        return day; 
    } 
 
 
 
     
    // 计算当月最后一天,返回字符串 
    public String getDefaultDay(){   
       String str = ""; 
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
 
       Calendar lastDate = Calendar.getInstance(); 
       lastDate.set(Calendar.DATE,1);//设为当前月的1号 
       lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1号 
       lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天 
        
       str=sdf.format(lastDate.getTime()); 
       return str;   
    } 
     
    // 上月第一天 
    public String getPreviousMonthFirst(){   
       String str = ""; 
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
 
       Calendar lastDate = Calendar.getInstance(); 
       lastDate.set(Calendar.DATE,1);//设为当前月的1号 
       lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号 
       //lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天 
        
       str=sdf.format(lastDate.getTime()); 
       return str;   
    } 
     
    //获取当月第一天 
    public String getFirstDayOfMonth(){   
       String str = ""; 
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
 
       Calendar lastDate = Calendar.getInstance(); 
       lastDate.set(Calendar.DATE,1);//设为当前月的1号 
       str=sdf.format(lastDate.getTime()); 
       return str;   
    } 
     
    // 获得本周星期日的日期   
    public String getCurrentWeekday() { 
        weeks = 0; 
        int mondayPlus = this.getMondayPlus(); 
        GregorianCalendar currentDate = new GregorianCalendar(); 
        currentDate.add(GregorianCalendar.DATE, mondayPlus+6); 
        Date monday = currentDate.getTime(); 
         
        DateFormat df = DateFormat.getDateInstance(); 
        String preMonday = df.format(monday); 
        return preMonday; 
    } 
     
     
    //获取当天时间  
    public String getNowTime(String dateformat){ 
        Date   now   =   new   Date();    
        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat(dateformat);//可以方便地修改日期格式    
        String  hehe  = dateFormat.format(now);    
        return hehe; 
    } 
     
    // 获得当前日期与本周日相差的天数 
    private int getMondayPlus() { 
        Calendar cd = Calendar.getInstance(); 
        // 获得今天是一周的第几天,星期日是第一天,星期二是第二天...... 
        int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;         //因为按中国礼拜一作为第一天所以这里减1 
        if (dayOfWeek == 1) { 
            return 0; 
        } else { 
            return 1 - dayOfWeek; 
        } 
    } 
     
    //获得本周一的日期 
    public String getMondayOFWeek(){ 
         weeks = 0; 
         int mondayPlus = this.getMondayPlus(); 
         GregorianCalendar currentDate = new GregorianCalendar(); 
         currentDate.add(GregorianCalendar.DATE, mondayPlus); 
         Date monday = currentDate.getTime(); 
          
         DateFormat df = DateFormat.getDateInstance(); 
         String preMonday = df.format(monday); 
         return preMonday; 
    } 
     
  //获得相应周的周六的日期 
    public String getSaturday() { 
        int mondayPlus = this.getMondayPlus(); 
        GregorianCalendar currentDate = new GregorianCalendar(); 
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6); 
        Date monday = currentDate.getTime(); 
        DateFormat df = DateFormat.getDateInstance(); 
        String preMonday = df.format(monday); 
        return preMonday; 
    } 
     
// 获得上周星期日的日期 
    public String getPreviousWeekSunday() { 
        weeks=0; 
        weeks--; 
        int mondayPlus = this.getMondayPlus(); 
        GregorianCalendar currentDate = new GregorianCalendar(); 
        currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks); 
        Date monday = currentDate.getTime(); 
        DateFormat df = DateFormat.getDateInstance(); 
        String preMonday = df.format(monday); 
        return preMonday; 
    } 
 
// 获得上周星期一的日期 
    public String getPreviousWeekday() { 
        weeks--; 
        int mondayPlus = this.getMondayPlus(); 
        GregorianCalendar currentDate = new GregorianCalendar(); 
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks); 
        Date monday = currentDate.getTime(); 
        DateFormat df = DateFormat.getDateInstance(); 
        String preMonday = df.format(monday); 
        return preMonday; 
    } 
     
    // 获得下周星期一的日期 
    public String getNextMonday() { 
        weeks++; 
        int mondayPlus = this.getMondayPlus(); 
        GregorianCalendar currentDate = new GregorianCalendar(); 
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7); 
        Date monday = currentDate.getTime(); 
        DateFormat df = DateFormat.getDateInstance(); 
        String preMonday = df.format(monday); 
        return preMonday; 
    } 
     
// 获得下周星期日的日期 
    public String getNextSunday() { 
         
        int mondayPlus = this.getMondayPlus(); 
        GregorianCalendar currentDate = new GregorianCalendar(); 
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6); 
        Date monday = currentDate.getTime(); 
        DateFormat df = DateFormat.getDateInstance(); 
        String preMonday = df.format(monday); 
        return preMonday; 
    } 
     
     
     
    private int getMonthPlus(){ 
        Calendar cd = Calendar.getInstance(); 
        int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH); 
        cd.set(Calendar.DATE, 1);//把日期设置为当月第一天  
        cd.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天  
        MaxDate=cd.get(Calendar.DATE);  
        if(monthOfNumber == 1){ 
            return -MaxDate; 
        }else{ 
            return 1-monthOfNumber; 
        } 
    } 
     
  //获得上月最后一天的日期 
    public String getPreviousMonthEnd(){ 
        String str = ""; 
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
 
       Calendar lastDate = Calendar.getInstance(); 
      lastDate.add(Calendar.MONTH,-1);//减一个月 
      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天  
      lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天  
       str=sdf.format(lastDate.getTime()); 
       return str;   
    } 
     
  //获得下个月第一天的日期 
    public String getNextMonthFirst(){ 
        String str = ""; 
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
 
       Calendar lastDate = Calendar.getInstance(); 
      lastDate.add(Calendar.MONTH,1);//减一个月 
      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天  
       str=sdf.format(lastDate.getTime()); 
       return str;   
    } 
     
  //获得下个月最后一天的日期 
    public String getNextMonthEnd(){ 
        String str = ""; 
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
 
       Calendar lastDate = Calendar.getInstance(); 
      lastDate.add(Calendar.MONTH,1);//加一个月 
      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天  
      lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天  
       str=sdf.format(lastDate.getTime()); 
       return str;   
    } 
     
    //获得明年最后一天的日期 
    public String getNextYearEnd(){ 
        String str = ""; 
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
 
      Calendar lastDate = Calendar.getInstance(); 
      lastDate.add(Calendar.YEAR,1);//加一个年 
      lastDate.set(Calendar.DAY_OF_YEAR, 1); 
     lastDate.roll(Calendar.DAY_OF_YEAR, -1); 
       str=sdf.format(lastDate.getTime()); 
       return str;   
    } 
     
  //获得明年第一天的日期 
    public String getNextYearFirst(){ 
        String str = ""; 
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");     
 
      Calendar lastDate = Calendar.getInstance(); 
      lastDate.add(Calendar.YEAR,1);//加一个年 
      lastDate.set(Calendar.DAY_OF_YEAR, 1); 
           str=sdf.format(lastDate.getTime()); 
      return str;   
         
    } 
     
  //获得本年有多少天 
    private int getMaxYear(){ 
        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; 
    } 
     
    private int getYearPlus(){ 
        Calendar cd = Calendar.getInstance(); 
        int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天 
        cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天 
        cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。 
        int MaxYear = cd.get(Calendar.DAY_OF_YEAR); 
        if(yearOfNumber == 1){ 
            return -MaxYear; 
        }else{ 
            return 1-yearOfNumber; 
        } 
    } 
  //获得本年第一天的日期 
    public String getCurrentYearFirst(){ 
        int yearPlus = this.getYearPlus(); 
        GregorianCalendar currentDate = new GregorianCalendar(); 
        currentDate.add(GregorianCalendar.DATE,yearPlus); 
        Date yearDay = currentDate.getTime(); 
        DateFormat df = DateFormat.getDateInstance(); 
        String preYearDay = df.format(yearDay); 
        return preYearDay; 
    } 
     
     
  //获得本年最后一天的日期 * 
    public String getCurrentYearEnd(){ 
        Date date = new Date(); 
        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式    
        String  years  = dateFormat.format(date);    
        return years+"-12-31"; 
    } 
     
     
  //获得上年第一天的日期 * 
    public String getPreviousYearFirst(){ 
        Date date = new Date(); 
        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式    
        String  years  = dateFormat.format(date); int years_value = Integer.parseInt(years);   
        years_value--; 
        return years_value+"-1-1"; 
    } 
     
  //获得上年最后一天的日期 
    public String getPreviousYearEnd(){ 
        weeks--; 
        int yearPlus = this.getYearPlus(); 
        GregorianCalendar currentDate = new GregorianCalendar(); 
        currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks+(MaxYear-1)); 
        Date yearDay = currentDate.getTime(); 
        DateFormat df = DateFormat.getDateInstance(); 
        String preYearDay = df.format(yearDay); 
        getThisSeasonTime(11); 
        return preYearDay; 
    } 
     
  //获得本季度 
    public String getThisSeasonTime(int month){ 
        int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; 
        int season = 1; 
        if(month>=1&&month<=3){ 
            season = 1; 
        } 
        if(month>=4&&month<=6){ 
            season = 2; 
        } 
        if(month>=7&&month<=9){ 
            season = 3; 
        } 
        if(month>=10&&month<=12){ 
            season = 4; 
        } 
        int start_month = array[season-1][0]; 
        int end_month = array[season-1][2]; 
         
        Date date = new Date(); 
        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式    
        String  years  = dateFormat.format(date);    
        int years_value = Integer.parseInt(years); 
         
        int start_days =1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month); 
        int end_days = getLastDayOfMonth(years_value,end_month); 
        String seasonDate = years_value+"-"+start_month+"-"+start_days+";"+years_value+"-"+end_month+"-"+end_days; 
        return seasonDate; 
         
    } 
     
    /**
     * 获取某年某月的最后一天
     * @param year 年
     * @param month 月
     * @return 最后一天
     */ 
   private int getLastDayOfMonth(int year, int month) { 
         if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 
                   || month == 10 || month == 12) { 
               return 31; 
         } 
         if (month == 4 || month == 6 || month == 9 || month == 11) { 
               return 30; 
         } 
         if (month == 2) { 
               if (isLeapYear(year)) { 
                   return 29; 
               } else { 
                   return 28; 
               } 
         } 
         return 0; 
   } 
   /**
    * 是否闰年
    * @param year 年
    * @return 
    */ 
  public boolean isLeapYear(int year) { 
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); 
  } 
分享到:
评论

相关推荐

    java日期处理总结

    java中关于日期处理的总结,包含各种日期格式之间的转java.util.Date(已经不提倡使用,该类的方法比较少) java.util.Calendar(抽象类) java.util.GregorianCalendar(是Calendar的子类,日期处理时候经常使用该类)****...

    JAVA日期与字符串的转换

    ### JAVA日期与字符串的转换 在Java编程中,经常需要将日期对象转化为字符串形式以便于存储或显示,或者反过来将字符串转化成日期对象来进行日期计算等操作。本文将详细介绍如何在Java中实现这两种转换。 #### 一...

    java日期格式转换

    ### Java日期格式转换详解 在Java开发中,对日期和时间进行操作是非常常见的需求之一。本文将基于给定文件中的代码示例,详细介绍如何在Java中实现日期格式的转换,并探讨其中涉及的关键知识点。 #### 一、理解...

    java日期使用工作总结

    ### Java日期处理技术详解 #### 一、引言 在软件开发中,处理日期与时间是非常常见的需求之一。Java提供了多种工具和API来帮助开发者处理日期相关的任务,如计算未来日期、格式化日期以及解析文本数据等。本文将...

    java中的日期处理类总结

    Java中的日期处理涉及到多个类,包括Date、Calendar、GregorianCalendar以及日期格式化类如DateFormat和SimpleDateFormat。这些类主要用于管理、操作和格式化日期和时间。以下是对这些类的详细说明: 1. **Date类**...

    JAVA日期判断方法小结

    "JAVA日期判断方法小结" 在JAVA语言中,日期判断是非常重要的一部分,以下是常见的日期判断方法的总结: 1. 判断某年是否为润年 判断某年是否为润年是日期判断的基本方法之一。该方法可以使用以下代码实现: ```...

    JAVA Swing日期选择控件datepicker

    总结来说,Java Swing的DatePicker组件通过第三方库提供了一个方便的方式来处理日期选择,它可以极大地提升用户体验。开发者需要了解如何导入和使用这个库,创建DatePicker实例,定制其外观和行为,并将其集成到GUI...

    java处理日期合并

    ### Java处理日期合并知识点 #### 一、背景与概述 在日常工作中,我们经常会遇到需要对一系列的时间段进行处理的情况,比如安排会议时间、统计员工请假时间等。这些时间段往往存在重叠的情况,如何有效地合并这些...

    JAVA日期做差

    ### Java日期做差 在Java编程中,处理日期和时间是一个常见需求,尤其是在需要计算两个日期之间的差异时。本文将详细介绍如何使用Java内置的方法来计算两个日期之间的秒数差值以及将这个差值转换为更易读的格式(如...

    java 技术总结.--java 技术

    Java标准库(JDK)提供了大量预定义的类和接口,如集合框架、I/O、网络编程、日期时间API等,极大地简化了开发工作。 九、框架与库 在实际开发中,我们常使用Spring、MyBatis、Hibernate等框架来简化企业级应用的...

    与众不同的 Java 日期格式化大全

    "Java 日期格式化大全" Java 日期格式化大全是 Java 中一个非常重要的知识点,它对于将时间字符...本文总结了 Java 日期格式化大全,涵盖了基本的日期格式化、时间模式字符串和语言设置等知识点。希望对大家有所帮助。

    JAVA 史上最牛的日期控件

    总结来说,这个“史上最牛的日期控件”可能是一个功能强大的Java日期选择组件,它支持广泛的日期范围,并且拥有独立运行的演示程序,便于用户和开发者测试和评估其性能和功能。Record.java和datechooser这两个文件...

    Java技术文章总结

    Java技术文章总结,涵盖了许多Java开发中的核心概念和实践技巧,是学习和提升Java技能的重要资源。以下是对这些文章主题的详细解读: 1. **Java基础** - 类与对象:Java是一种面向对象的语言,理解类和对象的概念...

    java里日期的用法汇总

    ### Java里日期的用法汇总 #### 一、获取当前日期与时间 ...以上就是关于Java中日期使用的总结,涵盖了日期的获取、格式化、加减操作以及其他相关操作。希望这些知识点能够帮助你更好地理解和使用Java中的日期功能。

    java日期格式化

    Java日期格式化是Java开发中常见的一项任务,它涉及到日期和时间的处理,尤其是在数据输入输出、用户界面显示以及数据库交互等场景。Java提供了一系列的类来帮助我们完成日期和时间的格式化工作,其中最常用的包括`...

    java日期计算

    根据给定文件的信息,我们可以总结出以下几个关于Java日期计算的关键知识点: ### 1. 获取某个月的最大天数 为了获取某个月的最大天数,我们可以通过`Calendar`类来进行操作。首先,我们需要创建一个`Calendar`...

    Java_Date_日期时间整理

    Java 中的日期时间处理是非常重要的,以下是 Java 中日期时间整理的知识点总结: 一、获取服务器端当前日期 在 Java 中,可以使用 `java.util.Date` 类来获取服务器端当前日期。可以使用以下代码来获取当前日期: ...

    java面试大全。各大公司面试总结。知识点总结,共31个文档

    Java面试大全涵盖了大量的技术知识点,这些内容通常会出现在各大公司的面试过程中。为了帮助你更好地准备,以下是基于描述中提到的“31个文档”可能涉及的一些核心Java面试知识点的详细阐述: 1. **基础概念**:...

    Java中日期处理的代码

    根据给定的文件标题、描述、标签以及部分内容,我们可以总结出以下有关 Java 日期处理的知识点: ### 1. 导入必要的包 在 Java 中处理日期时,我们需要导入一些必要的包来支持日期时间的格式化、解析等功能。示例...

    Java日期格式化及其使用例子收集

    ### Java日期格式化详解及其应用实例 #### 一、引言 在Java开发过程中,日期时间的处理是一项非常常见的需求。对于日期时间的格式化、解析等操作,`SimpleDateFormat` 类提供了强大的支持。本文将详细介绍`...

Global site tag (gtag.js) - Google Analytics