`
ableouou
  • 浏览: 72556 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

calendar、date等日期时间相关

阅读更多
(转载)java中的日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类2010-02-12 00:451、         Date类(该类现在很少用了)

l         Date类对象的创建:

n         创建一个当前时间

//默认是创建一个代表系统当前日期的Date对象

Date d = new Date();

n         创建一个我们指定的时间的Date对象:

下面是使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。

//创建一个代表2009年6月12号的Date对象

Date d1 = new Date(2009-1900, 6-1, 12); (注意参数的设置啊!)

l         正确获得一个date对象所包含的信息

如:

    Date d2 = new Date(2009-1900, 6-1, 12);

        //获得年份 (注意年份要加上1900,这样才是日期对象d2所代表的年份)

        int year = d2.getYear() + 1900;

        //获得月份 (注意月份要加1,这样才是日期对象d2所代表的月份)

        int month = d2.getMonth() + 1;

        //获得日期

        int date = d2.getDate();

        //获得小时

        int hour = d2.getHours();

        //获得分钟

        int minute = d2.getMinutes();

        //获得秒

        int second = d2.getSeconds();

        //获得星期 (注意:0代表星期日、1代表星期1、2代表星期2,其他的一次类推了)

        int day = d2.getDay();

运行结果:

年份:2009

月份:6

日期:12

小时:0 //不设置默认是0

分钟:0 //不设置默认是0

秒:0    //不设置默认是0

星期:5 //09-6-12今天就是星期5,又是一个星期天哦



2、         Calendar类

Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些


l         Calendar类对象的创建

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象。由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。


n         创建一个代表系统当前日期的Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期

n         创建一个指定日期的Calendar对象

使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

//创建一个代表2009年6月12日的Calendar对象

Calendar c1 = Calendar.getInstance();

c1.set(2009, 6 - 1, 12);


l         Calendar类对象字段类型


Calendar类中用一下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想

Calendar.YEAR——年份

Calendar.MONTH——月份

Calendar.DATE——日期

Calendar.DAY_OF_MONTH——日期,和上面的字段意义完全相同

Calendar.HOUR——12小时制的小时

Calendar.HOUR_OF_DAY——24小时制的小时

Calendar.MINUTE——分钟

Calendar.SECOND——秒

Calendar.DAY_OF_WEEK——星期几



l         Calendar类对象信息的设置与获得

n         Calendar类对象信息的设置

u       Set设置

如:Calendar c1 = Calendar.getInstance();

调用:public final void set(int year,int month,int date)

c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

利用字段类型设置

如果只设定某个字段,例如日期的值,则可以使用如下set方法:

调用:public void set(int field,int value)

//把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算

c1.set(Calendar.DATE,10);

//把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算

c1.set(Calendar.YEAR,2008);

         其他字段属性set的意义以此类推

u       Add设置

Calendar c1 = Calendar.getInstance();

//把c1对象的日期加上10,也就是c1所表的日期的10天后的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, 10);

//把c1对象的日期加上10,也就是c1所表的日期的10天前的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, -10);

其他字段属性的add的意义以此类推

n         Calendar类对象信息的获得

Calendar c1 = Calendar.getInstance();

// 获得年份

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

// 获得月份

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

// 获得日期

int date = c1.get(Calendar.DATE);

// 获得小时

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

// 获得分钟

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

// 获得秒

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

// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)

int day = c1.get(Calendar.DAY_OF_WEEK);



3、         GregorianCalendar类

GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。

GregorianCalendar类对象的创建

GregorianCalendar有自己的构造方法,而其父类Calendar没有公开的构造方法哦。

GregorianCalendar()
          在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。

GregorianCalendar(int year, int month, int dayOfMonth)
          在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar。

GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)
          为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
          为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。


创建一个代表当前日期的GregorianCalendar对象

GregorianCalendar gc = new GregorianCalendar();

//创建一个代表2009年6月12日的GregorianCalendar对象(注意参数设置哦,与其父类是一样的哦,月份要减去1)

GregorianCalendar gc = new GregorianCalendar(2009,6-1,12);

字段属性什么的都是随其父Calendar了,呵

另外:GregorianCalendar有下面一个方法:

isLeapYear(int year)
          确定给定的年份是否为闰年

4、         DateFormat类

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、分析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年,1 月 1 日 00:00:00 这一刻开始的毫秒数。

5、         SimpleDateFormat类

public class SimpleDateFormat extends DateFormatSimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。

所以本类可以实现:String 到 Date   Date到String的互转,如下:


SimpleDateFormat对象最常用的就是一下两招了:

//注意构造函数中是SimpleDateFormat类解析日期的模式,大小写代表的意义完全不一样哦

       SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

           //日期到字符串的转换

           String today = df.format(new Date());

           //字符串到日期的转换

           Date date = df.parse("2009-06-12 02:06:37");

           System.out.println(df.format(new Date()));

  

6、         日期类对象之间的互转

l         Date类对象与long型时间的互转

//将Date类的对象转换为long型时间

Date d= new Date();

//使用对象的getTime()方法完成

long dLong = d.getTime();


//将long型时间转换为Date类的对象

long time = 1290876532190L;

//使用Date的构造方法完成

Date d2 = new Date(time);

l         Calendar对象和long型时间之间的互转

// 将Calendar对象转换为相对时间

Calendar c = Calendar.getInstance();

long t1 = c.getTimeInMillis();


// 将相对时间转换为Calendar对象

Calendar c1 = Calendar.getInstance();

long t = 1252785271098L;

c1.setTimeInMillis(t1);

l         Calendar对象和Date对象之间的互转

// 将Calendar对象转换为相对时间

Calendar c = Calendar.getInstance();

Date d = c.getTime();


// 将相对时间转换为Calendar对象

Calendar c1 = Calendar.getInstance();

Date d1 = new Date();

//通过setTime()方法后,日历c1所表示的日期就d1的日期

c1.setTime(d1);


7、         Ok,利用以上各个类的功能,我们可以很简单的实现一些时间计算的功能哦,呵呵,下面看几个方法:

l         判断是否是闰年

    /**

     * 给定一个年份判断该年份是否为闰年 create date:2009-6-10 author:Administrator

     *

     * @param year

     * @return

     */

    public static boolean isLeapYear(int year) {

       GregorianCalendar calendar = new GregorianCalendar();

       return calendar.isLeapYear(year);

    }


l         获取当前日期的字符串表示形式

    /**

     * 利用SimpleDateFormat获取当前日期的字符串表示形式 格式:2009-55-05

     *

     * create date:2009-6-5 author:Administrator

     *

     * @return

     */

    public static String getCurrentDate() {

       // 注意 SimpleDateFormat("yyyy-MM-dd")的参数间隔符号可以随意设置的,如:

       // yyyy年MM月dd日 返回格式:2009年06月09日

       // yyyy-MM-dd 返回格式: 2009-06-09

       // SimpleDateFormat dateFormat = new SimpleDateFormat(

       // "yyyy-MM-dd HH:mm:ss");

       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

       return dateFormat.format(System.currentTimeMillis());


    }


l         给出任意一个年月日得到该天是星期几

    /**

     * 给出任意一个年月日得到该天是星期几 create date:2009-6-10 author:Administrator

     *

     * @param date

     *            参数格式 2009-6-10

     *   返回值:0 代表星期日,1代表星期1,2代表星期2,以此类推

     */

  

    public static int getWeek(String date) {


       // 注意参数的大小写格式

       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");

       Calendar c = Calendar.getInstance();

       try {

           Date d = dateFormat.parse(date);

           c.setTime(d);

       } catch (ParseException e) {

       }


       return c.get(Calendar.DAY_OF_WEEK)-1;


    }

l         获得今天n天以后或者n天以前是那一天

    /**

     * 获得距离今天n天的那一天的日期 create date:2009-6-11 author:Administrator

     *

     * @param day

     * @return

     */

    public static String getDistanceDay(int day) {


       Calendar calen = Calendar.getInstance();

       calen.add(Calendar.DAY_OF_MONTH, day);

       Date date = calen.getTime();


       // 这里也个用SimpleDateFormat的format()进行格式化,然后以字符串形式返回格式化后的date

       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");


       return dateFormat.format(date);

    }


l         获得距离指定日期n天的那一天的日期

/**

     * 获得距离指定日期n天的那一天的日期 create date:2009-6-11 author:Administrator

     *

     * @param date

     *            格式:2009-6-11

     * @param day

     * @return

     */

    public static String getDistanceDay(String date, int day) {


       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");

       Date d;

       Calendar c =Calendar.getInstance();

       try {

           d = dateFormat.parse(date);

           c.setTime(d);

           c.add(Calendar.DATE, day);

       } catch (ParseException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }


       return dateFormat.format(c.getTime());

    }




/**

     * 获得给定两个日期相差度天数

     * create date:2009-6-23 author:Administrator

     *

     * @param date1

     *            参数格式:2009-06-21

     * @param date2

     */

    public static long getGapDays(String date1, String date2) {


       String[] d1 = date1.split("-");

       String[] d2 = date2.split("-");

       Calendar c = Calendar.getInstance();


       c.set(Integer.parseInt(d1[0]), Integer.parseInt(d1[1]), Integer

              .parseInt(d1[2]), 0, 0, 0);

       long l1 = c.getTimeInMillis();

       c.set(Integer.parseInt(d2[0]), Integer.parseInt(d2[1]), Integer

              .parseInt(d2[2]), 0, 0, 0);

       long l2 = c.getTimeInMillis();


       return (Math.abs(l1 - l2) / (24 * 60 * 60 * 1000));

    }

转载于:http://blog.csdn.net/shibenjie/archive/2009/06/12/4263912.aspx
分享到:
评论

相关推荐

    JAVA new Date()或Calendar.getInstance().getTime()得到的时间不对

    NULL 博文链接:https://ollevere.iteye.com/blog/1320854

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

    Date类顾名思义,一看就知道是和日期有关的类了,这个类最主要的作用就是获得当 前时间了,然而这个类里面也具有设置时间以及一些其他的功能,可是由于本身设计的问题,这些方法却遭到众多批评,而这些遭受批评的...

    Java的日期时间处理类讲解代码( Date 、Calendar、SimpleDateFormat、LocalDateTime)

    特别适用于需要在Java项目中处理日期时间相关逻辑的人群。 使用场景 1、日期时间计算:本源码资源提供了丰富的示例代码,帮助用户学习如何在Java中进行日期时间的计算,包括日期加减、格式化、解析等操作。 2、时区...

    JAVA LunarCalendar返回农历(阴历)日期 JAR包 有包括详细DOC文档

    LunarCalendar返回农历(阴历)日期的JAR包 根据指定日期计算对应农历日期(这个计算方法是网上找的,最初的作者是谁已经无法考证了,感谢网络资源吧!),本人封装成好用的JAR包后发不出来,供大家免费下载! ...

    WebForm下日期时间选择控件

    web form下日期,时间选择控件。支持多种语言,可以自定义格式,丰富的风格供选择。

    JAVA日期操作汇总

    java日期的使用介绍和具体实现的示例 (适合新手) 1.计算某一月份的最大天数 Calendar time=Calendar.getInstance(); time.clear(); time.set(Calendar.YEAR,year); time.set(Calendar.MONTH,i-1);//注意,Calendar...

    jscalendar-1.0

    一个不错的js写的日期时间控件,可以根据自己的需求改成自己需要的显示方式。 使用方法(里面有例子): <link href=\"/styles/calendar.css\" rel=\"stylesheet\" type=\"text/css\"/> ...

    mobile-calendar

    start-date 起始日期 String defalut:当前日期 min-date 起始日期 String defalut:null max-date 起始日期 String defalut:null format 显示的格式 String defalut:'yy/mm/dd' 只支持 yy/mm/dd 或 yy-mm-dd ...

    JAVA的Date类与Calendar类

    在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。使用Date类的默认构造方法创建出的...

    Java面试复习3 常用API补充,日期和时间(Date和calendar以及time(Java8))相关常用API

    我们所熟知的日期和时间相关的类应该是date类和calendar类,看到这个题的事后第一时间想到了date类,但是date类获取到的是一个具体的时间,返回的是一个固定的时间,精确到了时分秒甚至毫秒,但是却似乎无法满足这个...

    Date、DateFormat、Calendar日期类

    如果调用空参构造创建对象那么对象为当前的时间,如果调用有参构造(参数是一个long类型代表毫秒数),那么返回的对象是从基准时间过了所输入参数的时间后表示的日期 基准时间是1970年1月1日8时0分0秒 如图: 注意...

    Python之日期与时间处理模块(date和datetime)

    Python中提供了多个用于对日期和时间进行操作的内置模块:time模块、datetime模块和calendar模块。其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h...

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

     DateField dateAndTime = new DateField("日期和时间", DateField.DATE_TIME,tz); // 创建包含日期字段和时间字段的DateField对象dateAndTime  dateAndTime.setDate(dd); // 设置初始日期和时间  form.append...

    python时间日期函数与利用pandas进行时间序列处理详解

    python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。 datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差。 下面我们...

    Calendar1.java

    3、日期的存储:通过开一个二维数组date[12][42]来进行储存。第一个下标代表12个月份,第二个下标是通过观察计算可知,一个月的日历一定可以用一个6行7列矩阵表示,空的位置填0,于是6 * 7 = 42。这部分写在getDate...

    v-calendar:Vue的优雅日历和日期选择器插件

    一个优雅的Vuejs日历和日期...npm i --save v-calendar 文献资料 有关完整文档,请访问 。 属性 强调 点 吧台 约夏克布丁 多页日历 主题颜色和深色模式 日期选择器 单一日期 多次约会 日期范围 带范围插槽的自定义日历

    java2 使用教程(第三版) 实验指导 上机实践5 字符串、时间与数字

    (日期比较中【代码2】和【代码4】处的public final void set(int year,int month,int date) 方法在设置月份时要在原来的基础上减掉一,即0表示一月,1表示2月等,所以此处代码要改成: Calendar calendar = ...

    使用Java的Calendar类计算两段时间之间的工作日的天/小时/分钟/秒数

    该工具类用于两个时间段之间节假日的计算(可获取两个时间段之间的节假日天数,小时,分钟,秒)

    java时间格式大全(算法源码)

    java,date,时间,时间格式,算法源码 * * @return */ public static String getTimeShort() { SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); Date currentTime = new Date(); String date...

Global site tag (gtag.js) - Google Analytics