Java中的日期操作&&集合

一、日期操作

Date,结合SimpleDateFormat类。

Calendar类。

1.Date类

java.util.Date类:(区别于java.sql.Date)

表示特定时间的Date对象:年月日时分秒时区

Date类中的很多获取日期,时间等等的方法, 都被Calendar类所提供替代。

2.SimpleDateFormat类

专门用于日期和文本之间的转换。

表示日期时间的特殊字符:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ApT1PNlV-1587083819691)(java笔记图片/date.png)]

1年:12月,365天
1天:24小时
1小时:60分钟
1分钟:60秒
1秒:1000毫秒
。。。。纳秒,皮秒,微妙。。。
	/*
		 * SimpleDateFormat类:
		 * Date-->String:日期格式化?就是将一个日期Date对象,按照指定的字符串格式去显示。
		 * 		format(),根据模板,将date日期,转为String字符串类型
		 * 		1.创建SimpleDateFormat对象。可以通过构造方法指定模板(格式):"yyyy-MM-dd"
		 * 			如果没有指定模板,使用系统默认:20-4-16 上午11:09
		 * 		2.sdf.format(date)-->String
		 * 
		 * 
		 * String-->Date:解析?就是将一个文本字符串,解析成一个Date对象。
		 * 		parse(),根据模板,将字符串解析为对应的日期对象,异常。
		 * 		1.同上
		 * 		2.sdf.parse(String)-->date
		 */
	public static void main(String[] args) throws ParseException {
		Date date = new Date();
		System.out.println(date);//Thu Apr 16 11:00:36 IRKT 2020
		
		
		/*
		 * "2020-04-16"-->"yyyy-MM-dd"
		 * 2020/04/16  --> "yyyy/MM/dd"
		 * 2020年04月16日:"yyyy年MM月dd日"
		 * 2020-04-16 11:01:33-->"yyyy-MM-dd HH:mm:ss"
		 * ....
		 */
		
		/*
		 * SimpleDateFormat类:
		 * Date-->String:日期格式化?就是将一个日期Date对象,按照指定的字符串格式去显示。
		 * 		format(),根据模板,将date日期,转为String字符串类型
		 * 		1.创建SimpleDateFormat对象。可以通过构造方法指定模板(格式):"yyyy-MM-dd"
		 * 			如果没有指定模板,使用系统默认:20-4-16 上午11:09
		 * 		2.sdf.format(date)-->String
		 * 
		 * 
		 * String-->Date:解析?就是将一个文本字符串,解析成一个Date对象。
		 * 		parse(),根据模板,将字符串解析为对应的日期对象,异常。
		 * 		1.同上
		 * 		2.sdf.parse(String)-->date
		 */
		
		//step1:创建格式化对象:
		SimpleDateFormat sdf = new SimpleDateFormat();//默认格式:yy-M-dd 
		
		//step2:调用format方法,将date--->String

		String s1 = sdf.format(date);
		System.out.println(s1);
		
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss.SSS");
		String s2 = sdf2.format(date);
		System.out.println(s2);//2020年04月16日 11:22:01.640
		
		
		
		
		//String类型的表示日期的数据--->Date对象
		String src = "2020-05-22";
		SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
		Date date2 = sdf3.parse(src);//会按照sdf对应的模板来进行格式化
		System.out.println(date2);

		
	}

3.Calendar类

Calendar类是抽象的。GregorianCalendar子类。

获取日期时间,也可以设置日期时间。

//step1:创建Calendar类的对象。
Calendar calendar = new GregorianCalendar();//方式一
Calendar rightNow = Calendar.getInstance();//方式二
//step2:
//获取类
calender.get(YEAR,MONTH,DAY_OF_MONTH,DAY_OF_WEEK,HOUE,MINUTE....);
//设置
calendar.set();
月份:
January,一月,0
February,二月,1
March,三月,2
April,四月,3
May,五月,4
June,六月,5
July,七月,6
August,八月,7
September,九月,8
October,十月,9
November,十一月,10
December,十二月,11

星期:
Monday,星期一
Tuesday,星期二
Wednesday,星期三
Thursday,星期四
Friday,星期五 
Saturday,星期六 
Sunday,星期日
public static void main(String[] args) {
		//step1:创建Calendar类的对象
//		Calendar calendar = new GregorianCalendar();
		Calendar calendar = new GregorianCalendar();
		//step2:获取所需要的数据
		/*
		 * 语法:calendar.get(XXX);
		 * year-->年
		 * month-->月,+1
		 * dayofmonth-->日期
		 * hourofday-->小时
		 * ....
		 */
		System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
		System.out.println("MONTH: " + (calendar.get(Calendar.MONTH)+1));
		System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
		System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
//		System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));//0上午am,1下午pm
//		System.out.println("HOUR: " + calendar.get(Calendar.HOUR));//12小时制。
		System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));//24小时制
		System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
		System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
		System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));

		/*
		 * 通过Calendar类,可以直接获取年,月,日,时,分,秒。。。。
		 * Date类:
		 * 思考题:通过Calendar类的对象,获取当前的年月日时分秒:拼接成一个字符串:
		 *  2020年04月16日 11:52:33
		 */
		
		String date = calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日";
		String time = calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);
		System.out.println(date);
		System.out.println(time);
		
	}
public static void main(String[] args) {
		
		
		//数值表示时间:1587019851679,当前时间,距离1970年1月1日0点0分0秒的毫秒差值
		System.out.println(System.currentTimeMillis());//1587019851679
		long startTime = System.currentTimeMillis();
		for(int i=0;i<10000;i++){
			//....老大老大的循环了。。
			System.out.println("....");
		}
		
		long endTime = System.currentTimeMillis();
		long time = endTime-startTime;
		System.out.println("该循环执行共耗时:"+time+"ms");
		
		
		Date date = new Date();//当前时间
		
		Date date2 = new Date(1507019851679L);
		System.out.println(date);
		System.out.println(date2);
		
		
		Calendar calendar = new GregorianCalendar();
		calendar.set(1999,5,20);
		System.out.println(calendar.get(Calendar.YEAR));
		System.out.println(calendar.get(Calendar.MONTH));
		System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
		
		calendar.set(Calendar.YEAR, 1998);
	}

二、集合

数组:存储一组相同类型的数据。理解为容器,装数据。里面的元素,就是存储的一坨数值。靠下标。

数组的局限:定长

​ 要想使用,需要先创建数组。

​ 要想创建数组,需要先指定大小。

​ 一旦一个数组创建了,那么长度不能更改。

集合框架:也叫容器类。理解为装数据的。

概念:动态存储多个对象。

  • 动态:集合的大小是随着存储的元素的个数而改变。
  • 对象:集合中所存储的数据,仅限于对象。
    • 引用类型,能够存储
    • 基本类型,装箱----->包装类类型,可以存储。

集合和数组的对比:

作用:都是存储多个数据。相当于容器。大白话:装数据。

区别:

  • 存储的数据类型

    ​ 数组:可以存储任意类型:基本类型,引用类型。

    ​ 集合:只能存储引用类型,对象。不能存储基本类型,但是可以存储包装类。

  • 容量:长度

    ​ 数组:定长,数组一旦创建,长度不能改。

    ​ 集合:变长,长度随着存储的元素的数量而改变。

相同点:数组和集合本身,都是引用类型的数据。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.Collection接口

容器的大小:

数组:arr.length,属性
字符串:str.length(),方法
集合:list.size();

集合框架的最大的父接口:规定的都是集合容器最基本的功能。

//常用方法:
add(元素);//向容器中添加元素
remove(元素);//从容器中移出某个元素
//();//容器的大小,存储的元素的个数
contains(元素);//是否包含指定的元素
clear();//清空容器
iterator();//迭代器

//其他方法
addAll(容器);//向当前容器中,添加所有了另外一个容器中的所有的元素
removeAll(容器);//从当前容器中,删除所有另一个容器的元素
isEmpty();//判断容器是否为空
retainAll();//
public static void main(String[] args) {
		//step1:创建一个集合容器
		Collection c1 = new ArrayList();
		System.out.println(c1);
		System.out.println(c1.size());//0
		//step2:操作这个集合容器
		//1.向容器中,添加一个元素
		c1.add("abc");//String-->Object
		System.out.println(c1.size());//1
		c1.add("hello");
		c1.add(100);//int-->Integer-->Object
		//2.打印容器的时候,直接显示容器中存储的元素数据
		System.out.println(c1);//[abc, hello, 100]
		//3.集合的长度:集合中存储的元素的个数
		System.out.println(c1.size());//3

		//4.删除集合中的元素
		c1.remove("abc");
		System.out.println(c1);//[hello, 100]
		System.out.println(c1.size());//2
		
		//5.是否包含指定的内容:
		System.out.println(c1.contains("hello"));//true
		
		
		//6.清空集合
		c1.clear();
		System.out.println(c1);//[]
		System.out.println(c1.size());//0
		System.out.println("c1是空的。。"+c1.isEmpty());
		c1.add("hello");
		c1.add("world");
		System.out.println("c1是空的。。"+c1.isEmpty());
		
		
		
		
		Collection c2 = new ArrayList();
		c2.add("aaa");
		c2.add("bbb");
		c2.add("ccc");
		
		System.out.println(c1);
		System.out.println(c2);
		
		//7.将c2容器中的所有元素,都添加到c1中。
		c1.addAll(c2);
		System.out.println(c1);//[hello, world, aaa, bbb, ccc]
		System.out.println(c2);//[aaa, bbb, ccc]
		//8.从c1中删除所有c2的元素
//		c1.removeAll(c2);
//		System.out.println(c1);//[hello, world]
//		System.out.println(c2);//[aaa, bbb, ccc]
		
		
		c1.add(100);
		c1.add("haha");
		System.out.println(c1);//[hello, world, aaa, bbb, ccc, 100, haha]
		//9.retainAll();对于c1容器来讲,仅保留和c2容器相同的数据。不同的其他的元素,删除。
		c1.retainAll(c2);
		System.out.println(c1); //[aaa, bbb, ccc]
		System.out.println(c2); //[aaa, bbb, ccc]
		
		//如何遍历集合中的所有的元素?迭代器Iterator
		/*
		 * 数组的遍历:
		 * 	普通for循环,下标
		 * 	for-each,增强for循环,不需要操作下标。。
		 * for(数据类型 变量名: 数组/集合){
		 * }
		 */
		
		for(Object obj:c1){
			System.out.println("-->"+obj);
		}
		
		
	
	}
发布了24 篇原创文章 · 获赞 15 · 访问量 1209

猜你喜欢

转载自blog.csdn.net/paidaxing15/article/details/105572277