JAVASE02-Unit03: 日期操作 集合框架

Posted 唐胜伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVASE02-Unit03: 日期操作 集合框架相关的知识,希望对你有一定的参考价值。

    Unit03: 日期操作 、 集合框架    

java.util.Date

package day03;

import java.util.Date;

/**
 * java.util.Date
 * Date内部维护一个long值,该值表示自1970年元旦
 * 到该对象表示的时间点之间所经过的毫秒值
 * 由于Date存在时区,千年虫问题,所以在jdk1.1发布
 * 时大部分操作时间的方法全部被标注为过时方法,不再
 * 建议使用。
 * 现在Date仅用于表示一个具体的时间点。
 * @author adminitartor
 *
 */
public class DateDemo {
    public static void main(String[] args) {
        //默认创建出来表示当前系统时间
        Date now = new Date();
        /*
         * Date重写了toString
         * 显示日期的格式对非英语地区不十分友好
         */
        System.out.println(now);
        /*
         * long getTime()
         * 获取当前Date内部维护的long值
         * 即:1970年元旦到当前对象表示的时间之间
         * 所经过的毫秒
         */
        long time = now.getTime();
        
        time += 1000*60*60*24;
        /*
         * void setTime(long time)
         * 将给定的long值设置到当前Date对象中
         * 使其表示这个时间
         */
        now.setTime(time);
        System.out.println(now);
    }
}
DateDemo.java

java.text.SimpleDateFormat

该类可以按照一个给定的日期格式字符串将Date

package day03;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * java.text.SimpleDateFormat
 * 该类可以按照一个给定的日期格式字符串将Date
 * 与String之间相互转换
 * @author adminitartor
 *
 */
public class SimpleDateFormat_Format {
    public static void main(String[] args) {
        Date now = new Date();
        System.out.println(now);
        
        /*
         * 2016-12-26 10:20:55
         * yyyy-MM-dd HH:mm:ss
         */
        SimpleDateFormat sdf
            = new SimpleDateFormat(
                "yyyy-MM-dd HH:mm:ss"
            );
        /*
         * Date->String
         * String format(Date date)
         * 将给定的Date按照指定的日期格式转换
         * 为字符串
         */
        String str = sdf.format(now);
        System.out.println(str);
    }
}
SimpleDateFormat_Format.java

java.text.SimpleDateFormat

将字符串按照指定的日期格式解析为Date对象

package day03;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 将字符串按照指定的日期格式解析为Date对象
 * @author adminitartor
 *
 */
public class SimpleDateFormat_Parse {
    public static void main(String[] args) throws ParseException {
        String str = "2008-08-08 20:08:08";
        
        SimpleDateFormat sdf
            = new SimpleDateFormat(
                "yyyy-MM-dd HH:mm:ss"    
            );
        /*
         * String->Date
         * Date parse(String str)
         * 将给定的字符串按照指定的日期格式解析
         * 为Date,使其表示该日期  
         */
        Date date = sdf.parse(str);
        
        System.out.println(date);
        
    }
}
SimpleDateFormat_Parse.java

根据用户输入的生日,计算该用户到今天为止, 一共活了多少天?

 1 package day03;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 import java.util.Scanner;
 7 
 8 /**
 9  * 根据用户输入的生日,计算该用户到今天为止
10  * 一共活了多少天?
11  * 要求用户输入的生日格式如:1992-08-02
12  */
13 public class Test1 {
14     public static void main(String[] args) throws ParseException {
15         //获取用户输入
16         Scanner scanner = new Scanner(System.in);
17         System.out.println(
18             "请输入您的生日:yyyy-mm-dd"
19         );
20         String birthStr = scanner.nextLine();
21         
22         //将用户输入的生日转换为Date对象
23         SimpleDateFormat sdf
24             = new SimpleDateFormat(
25                 "yyyy-MM-dd"    
26             );
27         Date birthDate = sdf.parse(birthStr);
28 //        System.out.println(birthDate);
29         //今天的日期
30         Date now = new Date();
31         
32         /*
33          * 今天的毫秒减去生日的毫秒差为:
34          * 经过的毫秒
35          */
36         long time = now.getTime()-birthDate.getTime();
37 //        System.out.println(time);
38         
39         //将经过的毫秒转换为天
40         time /= 1000*60*60*24;
41     
42         System.out.println("恭喜您,已经活了"+time+"天!请继续保持!");
43     }
44 }
Test.java

java.util.Calendar

日历类,是一个抽象类,规定了操作时间的相关方法

package day03;

import java.util.Calendar;
import java.util.Date;

/**
 * java.util.Calendar
 * 日历类,是一个抽象类,规定了操作时间的相关方法
 * 
 * 常用实现类:阳历历法GregorianCalendar
 * 
 * Calendar有一个静态方法可以根据所在地区获取
 * 相应的实现类。
 * @author adminitartor
 *
 */
public class Calendar_GetInstance {
    public static void main(String[] args) {
        /*
         * static Calendar getInstance()
         * 该静态方法会根据系统所在地区获取一个适用
         * 的实现类,大部分是阳历类。
         * 并且默认表示当前系统时间。
         */
        Calendar calendar = Calendar.getInstance();
        /*
         * Calendar的实现类也重写toString了
         * 只是不能直观看出日期
         */
        System.out.println(calendar);
        /*
         * Calendar -> Date
         * Date getTime()
         * 该方法可以返回一个Date类型实例,该实例
         * 表示的日期就是当前Calendar所表示的日期
         */
        Date date = calendar.getTime();
        System.out.println(date);
        
        
        /*
         * Date -> Calenar
         * void setTime(Date date)
         * 该方法可是使当前Calendar表示给定的
         * Date所表示的日期
         */
        calendar.setTime(date);
        
        
        
    }
}
Calendar_GetInstance.java

Calendar提供了一个可以获取指定时间分量所对应的值的方法

 1 package day03;
 2 
 3 import java.util.Calendar;
 4 
 5 /**
 6  * Calendar提供了一个可以获取指定时间分量所
 7  * 对应的值的方法:
 8  * int get(int field)
 9  * 参数为时间分量,无需记住具体取值,通常使用
10  * Calendar提供的常量表示。
11  * @author adminitartor
12  *
13  */
14 public class Calendar_Get {
15     public static void main(String[] args) {
16         Calendar calendar 
17             = Calendar.getInstance();
18         
19         //获取年?
20         int year = calendar.get(Calendar.YEAR);
21         
22         //月从0开始,0表示1月。
23         int month = calendar.get(Calendar.MONTH)+1;
24         /*
25          * 和日相关的常量:
26          * DATE 月中的天 与DAY_OF_MONTH一致
27          * DAY_OF_MONTH 月中的天(几号)
28          * DAY_OF_WEEK 星期几
29          * DAY_OF_YEAR 年中的天
30          * 
31          */
32         int day = calendar.get(Calendar.DAY_OF_MONTH);
33         
34         System.out.println(year+"-"+month+"-"+day);
35         
36         //获取时分秒
37         int h = calendar.get(Calendar.HOUR_OF_DAY);
38         int m = calendar.get(Calendar.MINUTE);
39         int s = calendar.get(Calendar.SECOND);
40         System.out.println(h+":"+m+":"+s);
41         
42         //今天是今年的第多少天?
43         int doy = calendar.get(Calendar.DAY_OF_YEAR);
44         System.out.println("今天是今年的第"+doy+"天");
45         
46         //今天是周几?
47         int dow = calendar.get(Calendar.DAY_OF_WEEK);
48         String[] data = new String[]{"日","一","二","三","四","五","六"};
49         
50         System.out.println("今天是周"+data[dow-1]);
51     
52         /*
53          * 获取给定时间分量所允许的最大值
54          */
55         int days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
56         System.out.println("今年共:"+days+"天");
57         
58         days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
59         System.out.println("当月共:"+days+"天");
60     }
61 }
Calendar_Get.java

Calendar允许对指定时间分量设置给定的值

package day03;

import java.util.Calendar;

/**
 * Calendar允许对指定时间分量设置给定的值
 * @author adminitartor
 *
 */
public class Calendar_Set {
    public static void main(String[] args) {
        Calendar calendar 
            = Calendar.getInstance();
        
        /*
         * 2008-08-08 20:08:08
         * 
         * void set(int filed,int value)
         * 针对给定的时间分量设置指定的值
         * 
         */
        //设置年
        calendar.set(Calendar.YEAR, 2008);
        System.out.println(calendar.getTime());
        
//        calendar.set(Calendar.MONTH, 7);
        calendar.set(Calendar.MONTH, Calendar.AUGUST);
        
        calendar.set(Calendar.DAY_OF_MONTH, 8);
        
        calendar.set(Calendar.HOUR_OF_DAY, 20);
        
        calendar.set(Calendar.MINUTE, 8);
        
        calendar.set(Calendar.SECOND, 8);
        
        System.out.println(calendar.getTime());
        //设置周几
        calendar.set(Calendar.DAY_OF_WEEK, 2);
        System.out.println(calendar.getTime());
        //超范围后会进位
        calendar.set(Calendar.DAY_OF_MONTH, 32);
        System.out.println(calendar.getTime());
    }
}
Calendar_Set.java

Calendar提供了用于计算日期的方法

package day03;

import java.util.Calendar;

/**
 * Calendar提供了用于计算日期的方法:
 * void add(int field,int value)
 * 对指定时间分量加上给定的值,若给定的值是负数,
 * 则是减去。
 * @author adminitartor
 *
 */
public class Calendar_Add {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        /*
         * 三个月零25天以后是哪天?
         */
        //加上3个月
        calendar.add(Calendar.MONTH, 3);
        System.out.println(calendar.getTime());
        
        calendar.add(Calendar.DAY_OF_YEAR, 25);
        System.out.println(calendar.getTime());
        
        //设置为当周的周一
        calendar.set(Calendar.DAY_OF_WEEK, 2);
        System.out.println(calendar.getTime());
    }
}
Calendar_Add.java

java.util.Collection

集合,用于存储一组元素,与数组很像

package day03;

import java.util.ArrayList;
import java.util.Collection;

/**
 * java.util.Collection
 * 集合,用于存储一组元素,与数组很像。
 * 集合规定了很多便于操作集合元素的方法。
 * 
 * Collection有两个常用的子接口:
 * List:可重复集
 * Set:不可重复集
 * 重复与否指的是集合内部的元素,而元素是否重复取决
 * 与元素间equals比较的结果。
 * 
 * @author adminitartor
 *
 */
public class Collection_Methods {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        /*
         * boolean add(E e)
         * 向当前集合中添加给定元素,若成功添加
         * 则返回true
         */
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        System.out.println(c);
        
        /*
         * int size()
         * 获取集合的元素个数
         */
        System.out.println("size:"+c.size());
        
        /*
         * boolean isEmpty()
         * 判断当前集合是否不含有元素
         */
        System.out.println("isEmpty:"+c.isEmpty());
        
        /*
         * void clear()
         * 清空集合元素
         */
        c.clear();
        System.out.println("集合已清空!");
        System.out.println("size:"+c.size());
        System.out.println("isEmpty:"+c.isEmpty());
    }
}
Collection_Methods.java

boolean contains(E e)

判断当前集合是否包含给定元素

package day03;

import java.util.ArrayList;
import java.util.Collection;

import day02.Point;

/**
 * boolean contains(E e)
 * 判断当前集合是否包含给定元素,判定标准是看给定
 * 元素与集合现有元素是否有equals比较为true的
 * @author adminitartor
 *
 */
public class Collection_Contains {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(new Point(1,2));
        c.add(new Point(2,3));
        c.add(new Point(3,4));
        System.out.println(c);
        
        Point p = new Point(1,2);
//        c.add(p);
        
        boolean contains = c.contains(p);
        System.out.println("包含:"+contains);
    }
}
Collection_Contains.java

集合存放的是元素的引用

package day03;

import java.util.ArrayList;
import java.util.Collection;

import day02.Point;

/**
 * 集合存放的是元素的引用
 * @author adminitartor
 *
 */
public class CollectionDemo {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        
        Point p = new Point(1,2);
        
        c.add(p);
        
        System.out.println("p:"+p);//(1,2)
        System.out.println("c:"+c);//[(1,2)]
        
        p.setX(2);
        
        System.out.println("p:"+p);//(2,2)
        System.out.println("c:"+c);//[(2,2)]
        
        
    }
}
CollectionDemo.java

 

以上是关于JAVASE02-Unit03: 日期操作 集合框架的主要内容,如果未能解决你的问题,请参考以下文章

JAVASE02-Unit05: 集合操作 —— 查找表

JAVASE02-Unit08: 文本数据IO操作 异常处理

JAVASE02-Unit07: 基本IO操作 文本数据IO操作

JAVASE02-Unit01: API文档 字符串基本操作

JAVASE02-Unit010: 多线程基础 TCP通信

JAVASE02-Unit012: Unit07: XML语法 XML解析