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

时间:2021-10-26 20:57:10

    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

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

 package day03;

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner; /**
* 根据用户输入的生日,计算该用户到今天为止
* 一共活了多少天?
* 要求用户输入的生日格式如:1992-08-02
*/
public class Test1 {
public static void main(String[] args) throws ParseException {
//获取用户输入
Scanner scanner = new Scanner(System.in);
System.out.println(
"请输入您的生日:yyyy-mm-dd"
);
String birthStr = scanner.nextLine(); //将用户输入的生日转换为Date对象
SimpleDateFormat sdf
= new SimpleDateFormat(
"yyyy-MM-dd"
);
Date birthDate = sdf.parse(birthStr);
// System.out.println(birthDate);
//今天的日期
Date now = new Date(); /*
* 今天的毫秒减去生日的毫秒差为:
* 经过的毫秒
*/
long time = now.getTime()-birthDate.getTime();
// System.out.println(time); //将经过的毫秒转换为天
time /= 1000*60*60*24; System.out.println("恭喜您,已经活了"+time+"天!请继续保持!");
}
}

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提供了一个可以获取指定时间分量所对应的值的方法

 package day03;

 import java.util.Calendar;

 /**
* Calendar提供了一个可以获取指定时间分量所
* 对应的值的方法:
* int get(int field)
* 参数为时间分量,无需记住具体取值,通常使用
* Calendar提供的常量表示。
* @author adminitartor
*
*/
public class Calendar_Get {
public static void main(String[] args) {
Calendar calendar
= Calendar.getInstance(); //获取年?
int year = calendar.get(Calendar.YEAR); //月从0开始,0表示1月。
int month = calendar.get(Calendar.MONTH)+1;
/*
* 和日相关的常量:
* DATE 月中的天 与DAY_OF_MONTH一致
* DAY_OF_MONTH 月中的天(几号)
* DAY_OF_WEEK 星期几
* DAY_OF_YEAR 年中的天
*
*/
int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(year+"-"+month+"-"+day); //获取时分秒
int h = calendar.get(Calendar.HOUR_OF_DAY);
int m = calendar.get(Calendar.MINUTE);
int s = calendar.get(Calendar.SECOND);
System.out.println(h+":"+m+":"+s); //今天是今年的第多少天?
int doy = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println("今天是今年的第"+doy+"天"); //今天是周几?
int dow = calendar.get(Calendar.DAY_OF_WEEK);
String[] data = new String[]{"日","一","二","三","四","五","六"}; System.out.println("今天是周"+data[dow-1]); /*
* 获取给定时间分量所允许的最大值
*/
int days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
System.out.println("今年共:"+days+"天"); days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("当月共:"+days+"天");
}
}

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