在Java中可以使用Date类和Calendar类来处理日期

但是Date类很多方法都过时了,推荐使用Canlendar类来处理日期,并对日期的格式化做了介绍。下面的部分将会逐一介绍

Date类

   Java提供了Date类来处理日期、时间,Date类既包含日期,也包含时间。Date类从JDK1.0版本就开始存在,存在时间久远,提供的6个构造器中,已有4个建议放弃使用,目前使用的为:

  • Date():生成一个以系统当前时间日期为准的Date对象。
  • Date(long date):根据指定的long整型数来生成一个Date对象。
  • boolean after(Date when):判断日期是否在指定的日期when之后
  • boolean before(Date when):判断日期是否在指定的日期when之前。
  • int compareTo(Date antherDate):比较两个日期大小,后面时间大于前面时间返回-1,否则返回1.
  • Boolean equals(Object obj):两个时间表示同一时间是返回true
  • long getTime():返回该对象对应long型整数
  • void setTime(long time):设置该对象的时间。

  

public class DateTest {
    public static void main(String[] args) throws InterruptedException {

        long start = System.currentTimeMillis();
        Date d1 = new Date(start);
        Thread.sleep(3000);
        long end = System.currentTimeMillis();
        Date d2 = new Date(end);
        System.out.println(d1.before(d2));
        System.out.println(d1.after(d2));
        System.out.println(d1.getTime());
        System.out.println(d1.equals(d2));    

    }
}

Calendar类

  Calendar是一个抽象类,用于表示日历。因为Date类在设计上存在一些缺陷,所以Java提供Calendar类来更好的处理日期和时间。

Calendar类不能直接创建,可以通过类方法来创建一个Calendar的子类,Java本身提供了GregorianCalendar子类,通过getInstance()方法返回默认时区和语言环境获得一个日历。返回的实例就是Java提供的默认子类。

  

  Calendar类提供的常用方法:

  • void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • int get(int field):返回指定日历字段的值。
  • int getActualMaximum(int field):返回指定日历字段的可能拥有的最大值。
  • int getActualMinimum(int field):返回指定日历字段的可能拥有的最小值。
  • void roll(int field,int amout):与add方法相似,区别在于超过该字段的最大范围时,也不会向上一个字段进位。
  • void set(int field,int value):将给定的日历字段设置为给定值。
  • void set(int year,int month,int date):设置Calendar对象的年、月、日3个字段值。
  • void set(int year,int month,int date,int hourOfDay,int minute,int second):设置Calendar对象的年、月、日、时、分、秒6个字段的值。

  

public class CalendarTest {

    public static void main(String[] args) {
        //通过类方法获得实例
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.get(Calendar.YEAR));
//        calendar.add(Calendar.DATE, 1);
//        System.out.println(calendar.get(calendar.DATE));

        //roll的用法 (当超过范围不会向上进位)
        calendar.roll(Calendar.MONTH,10 );
        System.out.println(calendar.get(calendar.YEAR));
        System.out.println(calendar.get(calendar.MONTH));

        //获取该字段可能拥有的最大值
        System.out.println(calendar.getMaximum(calendar.MONTH));

        //自己设置时间
        calendar.set(2016, 06, 8);
        System.out.println(calendar.get(calendar.YEAR));    //返回设置后的时间

        //Date和Calendar类之间的转换
        Date date = calendar.getTime();
        //使用SimpleDateFormat格式化输出时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh点mm分ss秒");
        System.out.println(sdf.format(date));
    }

}

使用DateFormat格式化日期

  DateFormat是一个抽象类,它也提供了几个工厂方法用于获取DateFormat对象。返回的都是DateFormat对象的子类实例,是同一个类型的实例。

   虽然返回的都是同一个对象类型的实例,但是根据不同的工厂方法,返回的对象在格式化时间对象时,处理不同部分的信息。

  • getDateInstance():返回一个日期格式器,只对日期进行格式化。
  • getTimeInstance():返回一个时间格式器,只对时间进行格式化。
  • getDateTimeInstance():返回一个日期、时间格式器,既对时间又对日期进行格式化。
  • getInstance():返回一个默认的系统相关的日期、时间格式器。

  

    public static void main(String[] args)  throws Exception{
        Date date = new Date();
        //默认为中国常用格式
        DateFormat format = DateFormat.getInstance();
        System.out.println(format.format(date));
        //返回日期、时间格式器国际统一标准
        format = DateFormat.getDateTimeInstance();
        System.out.println(format.format(date));
        //返回日期格式器,同时指定格式类型,为简洁型,指定要显示哪个国家的类型
        format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
        System.out.println(format.format(date));
        //返回日期格式器,同时指定格式类型,为中等型,指定要显示哪个国家的类型
        format = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);
        System.out.println(format.format(date));
        //返回日期格式器,同时指定格式类型,为完整型,指定要显示哪个国家的类型
        format = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);
        System.out.println(format.format(date));
        //返回日期格式器,同时指定格式类型,为复杂型,指定要显示哪个国家的类型
        format = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
        System.out.println(format.format(date));
    }

使用SimpleDateFormat格式化日期

  SimpleDateFormat是DateFormat的子类,是一种更简单的日期格式,以为我们指定的格式对日期进行格式化。

   注意使用的时候在new出对象的时候指定想要看到的日期格式即可。(具体代码上面例子有)

  

Java中的日期处理类的更多相关文章

  1. Java中的日期表示类

    一.概述 Java中的日期类设计的比较失败,刚开始使用Date来计算时间,后来大部分Date类的方法都过时了:想用Calendar类代替Date类,然而Calendar类也是不尽如人意.下面简单介绍下 ...

  2. Java中的日期操作

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

  3. Java中Date和Calender类的使用方法

    查看文章     Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...

  4. 填坑:Java 中的日期转换

    我们之前讨论过时间,在Java 中有一些方法会出现横线?比如Date 过期方法. 参考文章:知识点:java一些方法会有横线?以Date 过期方法为例 Java中的日期和时间处理方法 Date类(官方 ...

  5. 第七节:详细讲解Java中的日期,java.util.date

    前言 大家好,给大家带来详细讲解Java中的日期,java.util.date的概述,希望你们喜欢 类Date Java.lang.Object->java.util.Date public c ...

  6. Java中的日期和时间

    Java中的日期和时间 Java在java.util包中提供了Date类,这个类封装了当前的日期和时间. Date类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date() 下面的构 ...

  7. Java中的日期操作 分类: B1_JAVA 2015-02-16 17:55 6014人阅读 评论(0) 收藏

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

  8. JAVA中封装JSONUtils工具类及使用

    在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...

  9. Delphi与Java中的日期互换

    在最近做的一个项目中用到了Java和Delphi,发现它们不能正确读取对方的日期类型,如在Java中写入一个值为“2007-12-1”的日期值,通过Delphi读取却不是这个值了.通过查阅资料,发现两 ...

随机推荐

  1. OC高级编程——深入block,如何捕获变量,如何存储在堆上

    OC高级编程——深入block,如何捕获变量,如何存储在堆上   首先先看几道block相关的题目 这是一篇比较长的  博文 ,前部分是block的测试题目,中间是block的语法.特性,block讲 ...

  2. Qt自定义sleep延时函数(巧妙的使用时间差,但这样似乎CPU满格,而不是沉睡)

    Qt不像VC++的win32/MFC编程那样,提供了现成的sleep函数可供调用.Qt把sleep函数封装在QThread类中.子线程可以调用sleep函数.但是如果用户想在主线程实现延时功能,该怎么 ...

  3. Powershell访问数组

    数组的元素可以使用索引寻址,第一个元素的索引为0,第i个元素的索引为i-1,最后一个元素的索引为Count-1,但是Powershell为了使用方便,直接可以将 -1 作为最后的一个元素的索引. PS ...

  4. Linux企业级项目实践之网络爬虫(18)——队列处理

    所有的URL都接受管理,并在此进行流动.URL从管理模块的存储空间开始,一直到最后输出给磁盘上的URL索引,都由此部分调度.首先,给出URL调度的一般过程,如图所示.其流程的各个具体操作,后面详述.要 ...

  5. Vericant维立克 | 氪加

    Vericant维立克 | 氪加 Vericant维立克

  6. MySQL查询当前数据上一条和下一条的记录

    如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): ) [and other_cond ...

  7. Html中版权符号的字体选择问题(如何让版权符号更美观)

    一.发现问题 ©是html的中版权的符号,但是字体选择的不对会带来一些问题.如果是宋体,这个符号显示的就是很奇怪的一个符号. 二.解决问题 复制代码 代码如下: <span style=&quo ...

  8. text-overflow简单使用

    text-overflow属性配合overflow才有效果,还记得把文字强制一行显示,如下代码: <!DOCTYPE html> <html lang="zh-cn&quo ...

  9. 基于Cordova5.0开发自己定义插件(android)

    1.开发插件java部分 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenhmMjE2MjE2/font/5a6L5L2T/fontsize/400/fi ...

  10. 利用扩展双屏技术及Chrome浏览器,高速剖析优秀网页Div及CSS构成,并高效实现原型创作

    作为一个Web前台设计人员,应该充分利用可利用的硬件条件及专业的软件工具,迅速进入到高效氛围其中.实践中,我们能够利用扩展桌面双屏技术及Chrome浏览器高速剖析优秀网页Div及CSS构成,并高速实现 ...