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); } }
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); } }
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); } }
根据用户输入的生日,计算该用户到今天为止, 一共活了多少天?
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 }
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提供了一个可以获取指定时间分量所对应的值的方法
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允许对指定时间分量设置给定的值
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提供了用于计算日期的方法
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()); } }
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()); } }
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); } }
集合存放的是元素的引用
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)] } }
以上是关于JAVASE02-Unit03: 日期操作 集合框架的主要内容,如果未能解决你的问题,请参考以下文章
JAVASE02-Unit08: 文本数据IO操作 异常处理
JAVASE02-Unit07: 基本IO操作 文本数据IO操作