`
hanyi366
  • 浏览: 290434 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java calendar

    博客分类:
  • Java
 
阅读更多

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

/**
* 常用日历操作辅助类
*  
* @author steven 2010-08-10
* @email:qing.tan@iwode.com
*/
public class CalendarUtil {  

    private int weeks = 0;// 用来全局控制 上一周,本周,下一周的周数变化  
    private int MaxDate; // 一月最大天数  
    private int MaxYear; // 一年最大天数  

    /**
     * 测试
     *  
     * @param args
     */
    public static void main(String[] args) {  
        CalendarUtil tt = new CalendarUtil();  
        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.getThisSeasonFirstTime(11));  
        System.out.println("获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11));  
        System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"
                + CalendarUtil.getTwoDay("2008-12-1", "2008-9-29"));  
        System.out.println("获取当前月的第几周:" + tt.getWeekOfMonth());  
        System.out.println("获取当前年份:" + tt.getYear());  
        System.out.println("获取当前月份:" + tt.getMonth());  
        System.out.println("获取今天在本年的第几天:" + tt.getDayOfYear());  
        System.out.println("获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth());  
        System.out.println("获得今天在本周的第几天:" + tt.getDayOfWeek());  
        System.out.println("获得半年后的日期:"
                + tt.convertDateToString(tt.getTimeYearNext()));  
    }  

    /**
     * 获得当前年份
     *  
     * @return
     */
    public static int getYear() {  
        return Calendar.getInstance().get(Calendar.YEAR);  
    }  

    /**
     * 获得当前月份
     *  
     * @return
     */
    public static int getMonth() {  
        return Calendar.getInstance().get(Calendar.MONTH) + 1;  
    }  

    /**
     * 获得今天在本年的第几天
     *  
     * @return
     */
    public static int getDayOfYear() {  
        return Calendar.getInstance().get(Calendar.DAY_OF_YEAR);  
    }  

    /**
     * 获得今天在本月的第几天(获得当前日)
     *  
     * @return
     */
    public static int getDayOfMonth() {  
        return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);  
    }  

    /**
     * 获得今天在本周的第几天
     *  
     * @return
     */
    public static int getDayOfWeek() {  
        return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);  
    }  

    /**
     * 获得今天是这个月的第几周
     *  
     * @return
     */
    public static int getWeekOfMonth() {  
        return Calendar.getInstance().get(Calendar.DAY_OF_WEEK_IN_MONTH);  
    }  

    /**
     * 获得半年后的日期
     *  
     * @return
     */
    public static Date getTimeYearNext() {  
        Calendar.getInstance().add(Calendar.DAY_OF_YEAR, 183);  
        return Calendar.getInstance().getTime();  
    }  

    /**
     * 将日期转换成字符串
     *  
     * @param dateTime
     * @return
     */
    public static String convertDateToString(Date dateTime) {  
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
        return df.format(dateTime);  
    }  

    /**
     * 得到二个日期间的间隔天数
     *  
     * @param sj1
     * @param sj2
     * @return
     */
    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 = CalendarUtil.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;  
    }  

    /**
     * 计算当月最后一天,返回字符串
     *  
     * @return
     */
    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;  
    }  

    /**
     * 上月第一天
     *  
     * @return
     */
    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;  
    }  

    /**
     * 获取当月第一天
     *  
     * @return
     */
    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;  
    }  

    /**
     * 获得本周星期日的日期
     *  
     * @return
     */
    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;  
    }  

    /**
     * 获取当天时间
     *  
     * @param dateformat
     * @return
     */
    public String getNowTime(String dateformat) {  
        Date now = new Date();  
        SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式  
        String hehe = dateFormat.format(now);  
        return hehe;  
    }  

    /**
     * 获得当前日期与本周日相差的天数
     *  
     * @return
     */
    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;  
        }  
    }  

    /**
     * 获得本周一的日期
     *  
     * @return
     */
    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;  
    }   
  

 
分享到:
评论

相关推荐

    JavaCalendar_JAVA源码_

    JavaCalendar是Java编程语言中用于处理日期和时间的重要类,它是`java.util.Calendar`的实现。这个源码分析将深入探讨Java中日期和时间的管理,以及如何利用`Calendar`类进行相关的操作。 首先,`Calendar`类是抽象...

    JAVA Calendar,Date类详解

    在Java编程语言中,`Calendar`和`Date`类是处理日期和时间的核心组件。这两个类在处理日期、时间计算以及格式化等任务时扮演着关键角色。理解并熟练运用它们,对于提升Java开发能力至关重要。 `Date`类是Java早期...

    Java 之 Date 和 Calendar 实例

    在Java编程语言中,`Date`和`Calendar`类是处理日期和时间的核心组件。这两个类在不同的Java版本中有着不同的使用方式和功能,对于理解Java时间处理机制至关重要。本篇将深入探讨`Date`和`Calendar`类的实例应用。 ...

    JavaCalendar

    JavaCalendar是一个在Java环境中用于处理和显示时间的组件,尤其在Java Swing应用中,由于J Swing自身并未内置专门的时间控件,JavaCalendar就显得尤为重要。它提供了用户友好的界面,帮助开发者实现对日期和时间的...

    java的calendar具体用法

    ### Java中的Calendar类详解 #### 一、引言 在Java中处理日期和时间非常常见,而`java.util.Calendar`类则是进行此类操作的核心工具之一。`Calendar`类提供了一系列的功能来帮助开发者处理复杂的日期计算问题,...

    Java Calendar类使用总结及使用实例

    Java Calendar类使用总结及使用实例 Java Calendar类是Java语言中用于处理日期和时间的类,它提供了许多方法来获取和设置日期和时间。下面是Java Calendar类的使用总结及使用实例: 1. 获取Calendar实例 Java ...

    JAVA Calendar方法详解.doc

    在Java编程语言中,`Calendar`类是一个核心的日期和时间API,它用于处理各种日历系统,而不仅仅是常见的格里高利历(Gregorian Calendar)。`Calendar`是一个抽象类,这意味着它不能直接被实例化,但是提供了`...

    Java Calendar手机上期选择-日历实现.rar

    Java Calendar手机上期选择-日历实现  // 重载抽象类MIDlet的抽象方法startApp()  protected void startApp() {  Date dd = new Date(); // 表示当前的日期和时间  TimeZone tz = TimeZone.getTimeZone("GMT...

    Java基础之Date和Calendar类的使用方法

    Java中的Date和Calendar类是处理日期和时间的核心组件。Date类主要用于表示特定的瞬间,精确到毫秒。在早期版本的Java中,Date类的设计受到批评,因为它的API不直观且容易导致错误。为了解决这些问题,大部分日期和...

    Java Calendar日历与Date日期的相互转换详解

    Java Calendar日历与Date日期的相互转换详解 Java Calendar日历与Date日期的相互转换是Java开发中的一项基本技术,掌握这项技术可以帮助开发者更好地处理日期和时间相关的操作。在本文中,我们将详细介绍Java ...

    java calendar实例

    Java Calendar 类是 Java 语言中用于处理日期和时间的核心类之一。它是一个抽象类,提供了丰富的功能来操作日期,如获取、设置年份、月份、日期、小时等信息,以及进行日期之间的比较和计算。在Java 8之后,虽然引入...

    java 获取时间 本周本年本月第一天最后一天

    在Java中,通过`Calendar`类可以方便地操作日期。以下将详细介绍如何利用`Calendar`类来获取本周、本年、本月的第一天和最后一天的具体实现方法。 #### 本周的第一天与最后一天 在Java中,获取本周的第一天和最后...

    jcalendar -java calendar chooser

    4. **日期模型**:JCalendar使用Java的`java.util.Calendar`类作为其日期模型,这意味着它可以直接与Java标准日期处理库进行无缝集成,方便数据的读取和存储。 5. **组件组合**:JCalendar不仅可以作为一个独立的...

    java_Calendar控件

    压缩包文件名“javaCalendar”可能包含了示例代码或者扩展了`Calendar`功能的库,这将有助于进一步学习和理解如何在实际项目中有效利用`Calendar`控件。如果包含的是代码示例,通过分析和运行这些示例,开发者可以更...

    java 中Calendar日期格式的转换

    在Java编程语言中,`Calendar`类是处理日期和时间的核心工具之一,它提供了一种可以操作日期和时间字段(如年、月、日、时、分、秒等)的灵活方式。`Calendar`类是抽象的,因此我们通常通过其子类如`...

    Java中Calendar类.pdf

    Java中的`Calendar`类是处理日期和时间的核心类,它是一个抽象类,提供了一系列方法用于在特定瞬间与一组日历字段之间进行转换和操作。自JDK 1.1起,`Calendar`类就被推荐用来处理日期和时间,因为它的功能比`Date`...

    Java Calendar类常用示例_动力节点Java学院整理

    从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些,下面就介绍一下Calendar类的使用。

    Java Calendar日历类原理及使用方法

    Java Calendar日历类原理及使用方法 Java Calendar日历类是Java语言中的一种日历类,用于处理日期和时间相关的操作。该类提供了许多有用的方法来获取和设置日期和时间的信息。 日历类原理 Java Calendar日历类是...

    java中时间类Date和Calendar的使用

    Java中的时间类`Date`和`Calendar`是处理日期和时间的核心组件,它们在Java编程中扮演着重要的角色。在Java中,`Date`类主要用来表示特定的瞬间,精确到毫秒。而`Calendar`类则是一个抽象类,提供了比`Date`更灵活的...

    基于Java的Calendar万年历.zip

    在Java编程语言中,`Calendar`类是用于处理日期和时间的核心类之一。这个`基于Java的Calendar万年历.zip`文件很可能包含了一个示例项目,演示如何利用`Calendar`类构建一个显示从公元前到公元后数千年日期的万年历。...

Global site tag (gtag.js) - Google Analytics