JAVA核心API(上)03日期操作_集合框架(1)_第1页
JAVA核心API(上)03日期操作_集合框架(1)_第2页
JAVA核心API(上)03日期操作_集合框架(1)_第3页
JAVA核心API(上)03日期操作_集合框架(1)_第4页
JAVA核心API(上)03日期操作_集合框架(1)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 日期操作1.1. Date及其常用API1.1.1. JAVA 中的时间Java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点。固定的时间点叫纪元(epoch),是UTC时间1970年 1月 1日 00:00:00。UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。1.1.2. Date类简介java.util.Date 类封装日期及时间信息。Date类的大多数用于进行时间分量计算的方法已经被Ca

2、lendar取代。查看如下代码:1. Date date = new Date(); 2. / 系统当前的日期及时间信息3. System.out.println(date); 4. / Sun Jan 06 11:52:55 CST 20135. long time = date.getTime(); 6. /1970年1月1日至今的毫秒数因为Date的设计具有"千年虫"以及"时区"的问题,所以Date中的大部分方法已经不建议使用了,它们都被java.util.Calendar类所取代,该类我们稍后会讲解。1.1.3. setTime与getTime方

3、法1. void setTime(long time):该方法用于为一个Date对象设置其需要表示的时间,该参数为一个long值,其含义是需要表示的这个时间点距离1970年1月1日 00:00:00之间的毫秒差。1. long getTime()该方法用于获取一个Date对象所表示的时间点,该返回值为一个long值,表示该时间点距离1970年1月1日 00:00:00之间的毫秒差。1.1.4. Date 重写 toString方法Date重写了toString()方法,用一个字符串来描述当前Date对象所表示的时间。格式如下:1.     Mon Feb

4、 17 15:36:55 CST 2014由此我们可以看出,实际上Date的toString()方法返回的字符串虽然很清晰的描述了时间,但是对于非英语地区来将,该字符串不够友好,我们更希望按照特定地区表示时间的方式。比如我们更习惯以下的风格:1.     2014-02-17 15:36:55 星期一那么有没有方式可以代替 Date的toString()方法来获取一个特定格式的字符串呢?答案是肯定的,java为我们提供了一个类,叫做SimpleDateFormat,该类就可以完成。下面我们来学习一下这个类。1.2. SimpleDateFormat1.2

5、.1. SimpleDateFormat简介SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。简单的说,SimpleDateFormat就是根据一个特定的日期格式在字符串与Date之间相互转换。那么这个特定的日期格式是怎样定义的呢?下面我们来学习一下如何定义日期格式字符串。1.2.2. 日期模式匹配字符串日期模式的匹配字符串如表1所示。表1 日期模式匹配字符串例如: yyyy年MM月dd日-HH:mm:ss 可以匹配 2014年01月06日-13:22:411.2.3.

6、将Date格式化为String将Date格式化为String,我们需要使用SimpleDateFormat提供的方法:1.     String format(Date d)例如:1. Date now = new Date();/默认实例化的Date表示当前系统时间2. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");3. String str = sdf.format(now);4. System.out.println(str);/2014-0

7、1-06 13:21:121.2.4. 将String解析为Date将String格式化为Date,我们需要使用SimpleDateFormat提供的方法:1.     Date parse(String s)例如:1. String str = "2008年08月08日 12:22:46"2. SimpleDateFormat sdf 3.             = new SimpleDateFormat(&q

8、uot;yyyy年MM月dd日 HH:mm:ss");4. Date date = sdf.parse(str);5. System.out.println(date);/ Fri Aug 08 12:22:46 CST 20081.3. Calendar类1.3.1. Calendar 简介java.util.Calendar 类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高里历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。1.

9、3.2. getInstance()方法Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()。该方法可以根据当前系统所在地区获取一个适当的Calendar的子类实现。在实际开发中,也推荐使用该方法来实例化Calendar的对象。1.3.3. 设置日期及时间分量Calendar提供了一种通用的设置时间的方式:1.     void set(int field,int value)该方法可以通过对不同的时间分量分别设置不同的值。Calendar对不同的时间分量提供了相应的常量,我们在使用set方法设置时,第一个参数就应

10、当使用对应的常量作为时间分量。1. Calendar calendar = Calendar.getInstance();/创建出的Calendar表示当前系统时间2. /设置年为2008年3. calendar.set(Calendar.YEAR,2008);4. /设置月为5月5. calendar.set(Calendar.Month,4);/月份从0开始6. calendar.set(Calendar.Month,Calendar.MAY);/也可以使用常量来设置7. /设置日为30日8. caneldar.set(Calendar.DAY_OF_MONTH,30);1.3.4. 获取

11、时间分量对应的值Calendar提供了一种通用的获取时间分量的方式:1.     int get(int field)该方法可以通过对不同的时间分量获取相应的值。Calendar对不同的时间分量提供了相应的常量,我们在使用get方法获取时,参数就应当使用对应的常量作为时间分量。1. Calendar calendar = Calendar.getInstance();2. int year = calendar.get(Calendar.YEAR);3. int month = calednar.get(Calendar.Month);4. int da

12、te = calendar.get(Calendar.DAY_OF_MONTH);5. /需要注意,月份要加1,因为月份是从0开始的6. System.out.println(year+"-"+(month+1)+"-"+date);/2014-1-41.3.5. getActualMaximum方法int getActualMaximum(int field)方法用于获取给定时间分量所允许的最大值例如:获取当前系统时间中当月的最后一天(日所允许的最大值)1. Calendar calendar = Calendar.getInstance();2. i

13、nt max = calendar. getActualMaximum(Calendar.DAY_OF_MONTH);3. System.out.println("当前月的最后一天为:"+max+"日");/当前月的最后一天为31日1.3.6. add方法Calendar还允许我们使用统一的方式来对某个时间分量的值进行计算。我们需要使用方法 void add(int field,int amount)。该方法可以为某个时间分量的值加上给定的值,若想减去给定的值,那么传入的值需要是负数即可。并且计算后会自动进行相应的进位,例如若当前为月底,那么加一天后,为

14、下个月的月初,而月就会进位。例如: 当前系统时间为 2014-01-31日1. Calendar calendar = Calendar.getInstance();2. /计算明天(在日的基础上加一天)    3. calendar.add(Calendar.DAY_OF_YEAR,1);/当前Calendar表示的为2014-02-01,月进位了1.3.7. setTime与getTime方法Calendar的void setTime(Date date),允许我们为Calendar设置Date对象所表示的时间。Calendar的 Date getT

15、ime(),允许我们获取一个使用Date对象描述的Calendar所表示的时间。例如:1. Calendar calendar = Calendar.getInstance();2. Date date = calendar.getTime();3. System.out.println(date);/ Mon Feb 17 15:36:55 CST 20142. 集合框架2.1. Collectionjava提供了一种可以存数一组数据的数据结构,其提供了丰富的方法,在实际开发中往往比数组使用的广泛。这种数据结构成为集合:Collection。Collection是一个接口,其定义了集合的相关

16、功能方法。2.1.1. List和SetCollection派生出了两个子接口,一个是List另一个则是Set。List:称为可重复集,顾名思义,该集合中是允许存放重复元素的,那么何为重复元素?重复元素指的并非是同一个元素,而是指equals方法比较为true的元素。Set:称为不可重复集,所以,该集合中是不能将相同的元素存入集合两次,同List,这里相同指的也是两个元素的equals比较结果为true。2.1.2. 集合持有对象的引用集合中存储的都是引用类型的元素,那么引用类型变量实际上存储的是对象的“地址”,所以实际上集合只存储了元素对象在堆中的地址。而并不是将对象本身存入了集合中。2.1

17、.3. add()方法Collection定义了一个add方法用于向集合中添加新元素。 该方法定义为:1. boolean add(E e)该方法会将给定的元素添加进集合,若添加成功则返回true,否则返回false例如:1. Collection<String> c = new ArrayList<String>();2. System.out.println(c); / 3. c.add("a");4. c.add("b");5. c.add("c");6. System.out.println(c); /

18、 a, b, c这里Collection后面的<String>是泛型,我们后面会讲解,这里不写也没有关系。2.1.4. contains方法1. boolean contains(Object o)该方法会用于判断给定的元素是否被包含在集合中。若包含则返回true,否则返回false。这里需要注意的是,集合在判断元素是否被包含在集合中是使用元素的equals的比较结果。(o=null ? e=null : o.equals(e) 其中e是集合中的元素。例如:1. Collection<Cell> cells = new Array

19、List<Cell>(); 2. cells.add(new Cell(1, 2);3. cells.add(new Cell(1, 3);4. cells.add(new Cell(2, 2);5. cells.add(new Cell(2, 3);     6. Cell cell = new Cell(1, 3); 7. / List集合contains方法和对象的equals方法相关8. boolean flag = cells.contains(cell);9. / 如果Cell不重写equals方法将为false10. System.out.println(flag); / true 2.1.5. size,clear,isEmpty方法size方法用于获取当前集合中的元素总数。该方法定义为:int size()clear方法用于清空集合。该方法定义为:void clear()isEmpty方法用于判断当前集合中是否不 包含元素。该方法定义为:boolean i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论