【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection

1.Date及其经常使用API

1)JAVA 中的时间

Java中的时间使用标准类库的Date类表示。是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点。

固定的时间点叫纪元(epoch),是UTC时间1970年 1月 1日 00:00:00。

UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。

2)Date类简单介绍

java.util.Date 类封装日期及时间信息。

Date类的大多数用于进行时间分量计算的方法已经被Calendar代替。

3)setTime与getTime方法

void setTime(long time):

该方法用于为一个Date对象设置其须要表示的时间,该參数为一个long值。其含义是须要表示的这个时间点距离1970年1月1日 00:00:00之间的毫秒差。

long getTime()

该方法用于获取一个Date对象所表示的时间点。该返回值为一个long值。表示该时间点距离1970年1月1日 00:00:00之间的毫秒差。

4) Date 重写 toString方法

Date重写了toString()方法,用一个字符串来描写叙述当前Date对象所表示的时间。

格式例如以下:
    Mon Feb 17 15:36:55 CST 2014

代码演示:

package day03;import java.util.Date;/*** java.util.Date* 其每个实例用于表示一个时间点* 内部维护一个long值,该值是从UTC时间的1970/01/01 00:00:00* 至当前Date表示的时间点之间的毫秒差**/
public class DateDemo01 {public static void main(String[] args) {/** 默认创建出来的Date实例表示当前系统时间*/Date date = new Date();/** Date类重写类toString,仅仅是对于非英语国家来说不是非常友好*/System.out.println(date); //Mon Aug 24 21:37:16 CST 2015/** 获取Date内部维护的long值*/long longTime = date.getTime();System.out.println(longTime); //1440423436050//表示明天当前时间longTime += 1000*60*60*24;/** 支持传入long值的构造方法* 创建的Date就表示该long值所表示的时间*/Date tomrrowDate = new Date(longTime);System.out.println(tomrrowDate); //Tue Aug 25 21:37:16 CST 2015/** 也能够在现有的Date对象上调用setTime方法* 将long值传入,使其表示这个时间*/date.setTime(longTime);System.out.println(date); //Tue Aug 25 21:37:16 CST 2015}}

2.SimpleDateFormat

1)SimpleDateFormat简单介绍

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的详细类。它同意进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

简单的说。SimpleDateFormat就是依据一个特定的日期格式在字符串与Date之间相互转换。

2)日期模式匹配字符串

日期模式的匹配字符串例如以下表:

比如: yyyy年MM月dd日--HH:mm:ss 能够匹配 2014年01月06日--13:22:41

3)将Date格式化为String

将Date格式化为String。我们须要使用SimpleDateFormat提供的方法:

String format(Date d)

代码演示:

package day03;import java.text.SimpleDateFormat;
import java.util.Date;/*** java.text.SimpleDateFormat* 该类的作用是使用给定的字符串格式在Date与String之间进行转换。

* 对于该类,须要掌握: * 1:会写日期格式字符串 * 2:记住两个转换方法(String->Date,Date->String) * */ public class SimpleDateFormatDemo01 { public static void main(String[] args) { Date now = new Date(); System.out.println(now); /* * 2015-08-24 09:50:12 * yyyy-MM-dd HH:mm:ss */ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E"); /* * String format(Date date) * 依照创建SimpleDateFormat时指定的日期格式。 * 将当前给定的date对象表示的时间转换为字符串。 */ String str = sdf.format(now); System.out.println(str); } }

4)将String解析为Date

将String格式化为Date,我们须要使用SimpleDateFormat提供的方法:

Date parse(String s)

代码演示:

package day03;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/**将字符串依照该日期格式解析为Date**/
public class SimpleDateFormatDemo02 {public static void main(String[] args) {String str = "2008-08-08 20:08:08";System.out.println(str);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {/** Date parse(String str)* 将给定的字符串解析为Date对象并返回。

*/ Date date = sdf.parse(str); System.out.println(date); } catch (ParseException e) { e.printStackTrace(); } } }

3.Calendar类

1)Calendar 简单介绍

java.util.Calendar 类用于封装日历信息,其主要作用在于其方法能够对时间分量进行运算。

Calendar是抽象类。其详细子类针对不同国家的日历系统,当中应用最广泛的是GregorianCalendar(格里高里历。即通用的阳历),相应世界上绝大多数国家/地区使用的标准日历系统。

2)getInstance()方法

Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()。

该方法能够依据当前系统所在地区获取一个适当的Calendar的子类实现。

在实际开发中,也推荐使用该方法来实例化Calendar的对象。

3)setTime与getTime方法

Calendar的void setTime(Date date),同意我们为Calendar设置Date对象所表示的时间。

Calendar的 Date getTime(),同意我们获取一个使用Date对象描写叙述的Calendar所表示的时间。

代码演示:

package day03;import java.util.Calendar;
import java.util.Date;/*** java.util.Calendar* ---public abstract class Calendar* 日历类,用作操作时间。* 经常使用的是格里高利历法(阳历)* 默认创建出来的Calendar实现类的实例表示当前系统时间**/
public class CalendarDemo01 {public static void main(String[] args) {/** Calendar的getInstance能够依据当前系统所在地区* 创建合适的实现类,一般是格里高利历法。*/Calendar calendar = Calendar.getInstance();/** 不能直观看到详细表示的时间。

*/ System.out.println(calendar); /* * Calendar -> Date * * Date getTime() * Calendar提供的getTime方法能够将其表示的时间以Date形式返回。 */ Date date = calendar.getTime(); System.out.println(date); /* * Date -> Calendar * * void setTime(Date date) * Calendar提供了一个setTime()方法。能够使当前 * Calendar表示给定的date所表示的时间。 */ Date now = new Date(); calendar.setTime(now); System.out.println(calendar); } }

4)设置日期及时间分量

Calendar提供了一种通用的设置时间的方式:

void set(int field,int value)

该方法能够通过对不同的时间分量分别设置不同的值。Calendar对不同的时间分量提供了相应的常量。我们在使用set方法设置时,第一个參数就应当使用相应的常量作为时间分量。

代码演示:

package day03;import java.util.Calendar;/*** Calendar提供类一个set方法。同意我们对当前Calendar* 的各个时间分量进行单独设定。**/
public class CalendarSet {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();System.out.println(calendar.getTime());/** 设置各个时间分量,* 使其表示:2008/08/08 20:08:08* 须要注意。设置了某个时间分量的值可能会影响其它时间分量的值。

* 比如:设置了年、月、日可能会将星期改变。 */ //设置年份 calendar.set(Calendar.YEAR,2008); //设置月份 //月份从0開始,有常量相应。0表示1月。

。。

calendar.set(Calendar.MONTH,7); //设置日 //Calendar.DATE==Calendar.DAY_OF_MONTH calendar.set(Calendar.DAY_OF_MONTH,8); //设置小时 //Calendar.HOUR_OF_DAY :24小时制 //Calendar.HOUR :12小时制 calendar.set(Calendar.HOUR_OF_DAY,20); //设置分钟 calendar.set(Calendar.MINUTE,8); //设置秒 calendar.set(Calendar.SECOND,8); System.out.println(calendar.getTime()); } }

5) 获取时间分量相应的值

Calendar提供了一种通用的获取时间分量的方式:

int get(int field)

该方法能够通过对不同的时间分量获取对应的值。

Calendar对不同的时间分量提供了对应的常量,我们在使用get方法获取时,參数就应当使用对应的常量作为时间分量。

6)getActualMaximum方法

int getActualMaximum(int field)方法用于获取给定时间分量所同意的最大值。

代码演示:

package day03;import java.util.Calendar;/*** Calendar提供了一个get方法,能够获取给定的时间分量所相应的值。**/
public class CalendarGet {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();//获取年int year = calendar.get(Calendar.YEAR);//获取月,从0開始int month = calendar.get(Calendar.MONTH)+1;//获取日int day = calendar.get(Calendar.DATE);      System.out.println(year+"-"+month+"-"+day);//获取星期。每周第一天从星期日開始(1表示周日)int week = calendar.get(Calendar.DAY_OF_WEEK);System.out.println(week==1?7:week-1);/** int getActualMaximum(int field)* Calendar提供了一个方法。能够获取给定的时间分量* 在当前Calendar表示的日期中所同意的最大值。* 查看当月的月底--Calendar.DAY_OF_MONTH*/int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);System.out.println("这个月:"+days+"天");/** 今年多少天?--Calendar.DAY_OF_YEAR*/days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);System.out.println("今年共:"+days+"天");}}

7) add方法

Calendar还同意我们使用统一的方式来对某个时间分量的值进行计算。

我们须要用法

void add(int field,int amount)

该方法能够为某个时间分量的值加上给定的值,若想减去给定的值,那么传入的值须要是负数就可以。而且计算后会自己主动进行对应的进位,比如若当前为月底,那么加一天后。为下个月的月初。而月就会进位。

package day03;import java.util.Calendar;/*** Calendar提供了一个add方法,用于计算时间。* void add(int field,int value)* 对于给定的时间分量加上给定的值,若value为负数,* 则减去指定的值。**/
public class CalendarAdd {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();//calendar.add(Calendar.YEAR,1);System.out.println(calendar.getTime());/** 查看3年零2个月又25天是那天?*/calendar.add(Calendar.YEAR,3);calendar.add(Calendar.MONTH,2);calendar.add(Calendar.DAY_OF_YEAR,25); //可能会跨年,故用DAY_OF_YEAR//calendar.add(Calendar.DATE,25);System.out.println(calendar.getTime());//减去4年calendar.add(Calendar.YEAR,-4);System.out.println(calendar.getTime());}}

4.Collection

java提供了一种能够存数一组数据的数据结构,其提供了丰富的方法。在实际开发中往往比数组使用的广泛。这样的数据结构成为集合:Collection。

Collection是一个接口,其定义了集合的相关功能方法。

1) List和Set

Collection派生出了两个子接口,一个是List还有一个则是Set。

List:称为可反复集,顾名思义,该集合中是同意存放反复元素的,那么何为反复元素?反复元素指的并不是是同一个元素,而是指equals方法比較为true的元素。

Set:称为不可反复集,所以,该集合中是不能将同样的元素存入集合两次,同List,这里同样指的也是两个元素的equals比較结果为true。

2) add()、size()、clear()、isEmpty()方法

Collection定义了一个add方法用于向集合中加入新元素。

该方法定义为:

boolean add(E e)

该方法会将给定的元素加入进集合,若加入成功则返回true,否则返回false。

size方法用于获取当前集合中的元素总数。

该方法定义为:int size()

clear方法用于清空集合。

该方法定义为:void clear()

isEmpty方法用于推断当前集合中是否不 包括元素。该方法定义为:boolean isEmpty()

代码演示:

package day03;import java.util.ArrayList;
import java.util.Collection;/*** java.util.Collection* 集合,用于存放一组元素。* 提供类若干功能,比数组使用方便。

* */ public class CollectionDemo01 { 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"); /* * int size() * 获取当前集合中的元素个数 */ System.out.println("size:"+c.size()); //size:4 /* * boolean isEmpty() * 推断当前集合是否不包括不论什么元素 * 当集合中没有元素时返回true */ boolean b = c.isEmpty(); System.out.println(b); //false /* * void clear() * 清空集合元素 */ c.clear(); System.out.println("size:"+c.size()); //size:0 System.out.println(c.isEmpty()); //true } }

3)contains方法

boolean contains(Object o)

该方法会用于推断给定的元素是否被包括在集合中。若包括则返回true,否则返回false。

这里须要注意的是,集合在推断元素是否被包括在集合中是使用元素的equals的比較结果。

(o==null ? e==null : o.equals(e)) 当中e是集合中的元素。

代码演示:

package day03;import java.util.ArrayList;
import java.util.Collection;/*** 推断集合是否含有给定的元素**/
public class CollectionDemo02 {public static void main(String[] args) {Collection c = new ArrayList();c.add(new Aoo("zhangsan",21));c.add(new Aoo("lisi",22));c.add(new Aoo("wangwu",23));/** 集合的toString格式* [元素1.toString(),元素2.toString()...]*/System.out.println(c); //[zhangsan,21, lisi,22, wangwu,23]Aoo a = new Aoo("zhangsan",28);/** boolean contains(E e)* 推断当前集合是否包括给定元素,包括则返回true* 推断根据是看给定的元素与集合中现有的元素是否* 存在equals比較为true的。有则觉得包括!

*/ boolean contains = c.contains(a); System.out.println("contains:"+contains); //contains:true } }

4)集合持有对象的引用

集合中存储的都是引用类型的元素,那么引用类型变量实际上存储的是对象的“地址”,所以实际上集合仅仅存储了元素对象在堆中的地址。

而并非将对象本身存入了集合中。

代码演示:

package day03;import java.util.ArrayList;
import java.util.Collection;public class CollectionDemo03 {public static void main(String[] args) {Collection c = new ArrayList();Aoo o = new Aoo("zhangsan",23);c.add(o);System.out.println(c); //[zhangsan,23]o.setName("lisi");System.out.println(c); //[lisi,23]}}

【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection相关推荐

  1. 【JavaSE】String类总结,StringBuilder、StringBuffer、String的区别讲解

    文章目录 String对象的构造 String类的一些常用方法 求字符串的长度 字符串判空 字符串对象的比较 字符串对象的查找 字符串对象的转化 字符串对象的截取 字符串对象的替换 字符串对象的拆分 ...

  2. 【JavaSE】常用类3[String类、StringBuffer、StringBuilder]

    常用类3 ①.String类 -String常用方法 -String案例演示 ②StringBuffer和StringBuilder -StringBuffer -StringBuilder -Str ...

  3. 【JavaSE】类和对象 (二) —— 封装、包以及 static 关键字

    目录 1. 封装 1.1 封装的概念 1.2 访问限定符 2. 包 2.1 包的概念 2.2 导入包中的类 2.3 自定义包 2.3.1 包的基本规则 2.3.2 创建一个包 2.4 包访问权限--d ...

  4. 【JavaSE】之注解与反射

    [JavaSE]注解与反射 前言 一.注解 1.注解概述 2.内置注解 3.元注解 4.自定义注解 二.反射 1.静态语言&动态语言 2.反射概述 3.Class类及获取Class类实例 4. ...

  5. 【JavaSE】算术运算符、关系运算符、逻辑运算符、赋值运算符与三元运算符

    本专栏为 JavaSE 的学习笔记及相关项目,专栏长期免费更新 ❤️ ❤️ ❤️ ⭐️往期回顾: [JavaSE]String类与基本数据类型转换 [JavaSE]Java数据类型.变量基本使用.编码 ...

  6. 【JavaSE】面向对象之多态、向上转型与向下转型

    本专栏为 JavaSE 的学习笔记及相关项目,专栏长期免费更新 ❤️ ❤️ ❤️ ❤️ 个人主页:Nezuko627 欢迎来访~~~ ⭐️往期回顾: [JavaSE]继承中内存发生了什么变化?这篇文章 ...

  7. 【Redis】14.Redis高级数据类型Bitmaps、HyperLogLog、GEO

    [Redis]14.Redis高级数据类型Bitmaps.HyperLogLog.GEO Bitmaps:用比特位进行快速的状态统计 Bitmaps基本操作 Bitmaps不是一个新的数据类型,而是s ...

  8. 【数据库】第一章 数据库的分类、SQL、数据库、表和表记录的常用操作

    [数据库]第一章 数据库的分类.SQL.数据库与表的常用操作 文章目录 [数据库]第一章 数据库的分类.SQL.数据库与表的常用操作 一.数据库的分类 1.关系型数据库 2.非关系型数据库 3.MyS ...

  9. arcgis 删除图形重复折点_【干货】ArcGIS中画环状图斑、挑子区及消除图斑重复区域...

    原标题:[干货]ArcGIS中画环状图斑.挑子区及消除图斑重复区域 ArcGIS的Editor菜单下,有许多功能我们不经常用,但是在如果仔细的研究下就会发现,其实许多功能是相当实用的. 1.绘制环状图 ...

最新文章

  1. Swift iOS : 字体图标
  2. 百度第七期智能对话训练营来了!
  3. 面试官:啥是集群策略啊?
  4. Drupal中的分类(Taxonomy)用法 (转)
  5. 安卓通讯录系统mysql_Android手机通讯录项目开发--联系人数据库contacts2.db介绍
  6. 1 张图,拆解阿里 P8高级架构师必会技术栈!
  7. Xtreme ToolkitPro 初使用
  8. oracle层级计算推演,云和恩墨的两道Oracle面试题
  9. 小甲鱼C++笔记(上)1-24
  10. Helix QAC软件下载安装使用试用
  11. 我对计算机基础的认识,我对计算机的认识
  12. LA5713 秦始皇修路 (mst)
  13. 第四届中国软件开源创新大赛通知
  14. ios 制作方形头像
  15. jenkins + git+maven做持续集成
  16. 【智能制造】38页超赞PPT解读智能制造核心要素及其标准化!
  17. IT资产管理系统Snipe-IT使用docker安装记录
  18. 如何去掉html中input的边框
  19. python选择哪个版本-Python下载哪个版本比较好?
  20. js基础练习题(1)

热门文章

  1. 丰田chr优惠5万_别克昂科威优惠5万?是否该考虑入手了呢?
  2. mysql 遍历_MySQL 实现树的遍历详解及简单实现示例
  3. 基于jsp的图书管理系统_计算机毕业设计基于JSP书籍租阅管理系统的设计与实现...
  4. 关于stm32f407wifi模块的设置_料粉定量称重模块,罐子称重传感器
  5. vue vuex 挂载_Vue $mount()手动挂载
  6. hdc mfc 画扇形图_使用echarts绘制条形图和扇形图
  7. python max函数_Python3
  8. 用户管理系统控制台版连接数据库
  9. 如何给HTML添加事件?
  10. 微信小程序(canvas)画图保存到本地相册(wepy)