Java Date and Time系列
来源:互联网 发布:手机版迅雷网络异常 编辑:程序博客网 时间:2024/05/17 08:52
转载:http://blog.csdn.net/pnet2008/article/details/17021579
放在一起做个介绍,让大家能对这些日期和时间处理类有个全面的了解。
Java中包含了以下的日期和时间的处理类或方法
System.currentTimeMillis()
System类的一个静态方法,返回从1970年1月1日到现在的毫秒数。
java.util.Date
一个日期和时间的表示类,不过它里面的好多方法都是不推荐使用的。
java.sql.Date
一个被JDBC使用的日期类,里面好多方法也是不推荐使用的
java.sql.Time
一个被JDBC使用的时间类,里面好多方法也是不推荐使用的
java.sql.Timestamp
一个被JDBC使用的时间戳类
java.util.Calendar
一个基本的日历类,这个类提供了一些方法可以在一个日期上对年月日等做运算来得到另一个日期。
java.util.GregorianCalendar
java.util.Calendar类的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
java.util.TimeZone
一个时区表示类,在跨时区表示日历时比较有用。
java.text.SimpleDateFormat
一个日期转换类,提供日期类型和字符串之间的互相转换。
那么我们该使用哪个类呢?这取决于你的程序要完成的任务,在接下来的小节中我会对这些类做详细介绍。
一、
System.currentTimeMillis()
静态方法System.currentTimeMillis()返回1970-01-01 00:00:00.000到现在的毫秒数,返回值是一个long型
返回值可以用来初始化java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp,例如:System.nanoTime()
顺便说一下System.nanoTime(),这也是一个静态方法,获得一个以纳秒为单位的值。但是它和日期或时间的表示没有任何关系,不要将它和当前的日期或时间联系起来。在上面我们看到System.currentTimeMillis()返回的是1970-01-01 00:00:00.000到现在的毫秒数,但System.nanoTime()返回的不是1970-01-01 00:00:00.000到现在的纳秒数,这个计时开始时间是不确定的。
System.nanoTime()虽然和当前时间没关系,但是API文档中推荐用它可以来衡量程序的运行时间以上这段程序在大多数情况下可以得到我们期望的结果,但也有例外,例如在window xp系统中可能会出现负值。
至于为什么出现负值,网上有资料说和CPU和操作系统都有关系,由于本人理解也很局限,不妄下定论,有兴趣的同学可以研究一下。
二、
Java.util.Date的创建
java.util.Date这个类可能是我们最常用的一个用来表示日期的类了。我们可以像下面这样初始化一个实例来表示当前日期和时间:
这个time的值和在创建date实例的时刻调用System.currentTimeMillis()获取到的值是一样的。
所以,你也可以像下面这样创建一个日期实例:
java.util.Date之间的比较
由于java.util.Date实现了java.lang.Comparable接口,所以我们可以像下面那样使用compareTo()方法来比较两个实例的值:
如果date1小于date2返回-1如果date1和date2相等返回0
如果date1大于date2返回1
除了使用compareTo()方法,还可以使用Date类另外提供的before()和after()方法来进行比较
写在结尾
java.util.Date关于年月日等get和set操作都已经是不推荐的方法了,如果需要对这些值进行操作,那我们该考虑使用java.util.Calendar类来代替java.util.Date类。
三、ava.util.Calendar是一个抽象类,它定义了日历相关的一系列操作,使用java.util.Calendar除了可以表示日期和时间,还可以用它来对时期或时间进行算术运算,比如获取当前日期10天之后的日期。
Java.util.Calendar由于是一个抽象类,所以我们不能对它进行实例化,如果想获得一个日历实例,可能要用到java.util.GregorianCalendar类。
实例化
java.util.GregorianCalendar是java.util.Calendar的一个实现类,当然除了java.util.GregorianCalendar还有其它实现类,这里不做讨论。
可以像下面这样获得一个日历实例:
获取日期和时间
Calendar类提供了一系列方法可以用来获取年、月、日、时、分、秒、毫秒、时区等,像下面这样:
当然不止这些,还有其它的,可以参看JavaDoc文档。设置日期和时间
calendar除了提供了get方法来获取日期或时间,也提供了许多set方法用来设置日历实例的日期或时间:
关于日历的算术运算
使用Calendar的add()方法可以对日历实例进行计算,比如:
需要注意的地方
2、calendar类中使用1到7来表示周日到周六,1表示周日,7表示周六,比如calendar.get(Calendar.DAY_OF_WEEK)的值是3,那么表示周二。
四、
Java.text.SimpleDateFormat类我们一般用来它实现字符串于java.util.Date之间的互转,比如将Date实例转换为指定的字符串表示形式,
或者将一个字符串的日期表示转为具体的Date实例。
创建SimpleDateFormat实例
可以像下面一样创建一个SimpleDateFormat实例:
其中pattern参数用来指定字符串和日期互转时的格式。日期转换成字符串
使用format()方法可以将一个日期类型的值转换为字符串表示形式,比如:
注意,format()方法的参数必须是java.util.Date类型的实例。字符串转换为日期
使用parse()方法可以可以将一个日期形式的字符串转换为一个java.util.Date类型:
根据具体的语言环境创建SimpleDateFormat实例
具体的语言环境可以通过Locale类表示,在这先不做介绍了。想通过具体语言环境来创建SimpleDateFormat实例可以像下面那样:
输出如下:我们发现星期和月份的表示都是中文的,如果new Locale("zh", "ZH")换成new Locale("en", "EN"),那输出就会变为:Wednesday December 2013 17:09:04.757+0800常用日期格式
- Java Date and Time系列
- Java Date and Time系列(一)- 概述
- Java Date and Time系列(二)- System.currentTimeMillis()介绍
- Java Date and Time系列(二)- System.currentTimeMillis()介绍
- Java Date, Time and Format
- 【Learning】Java Date and Time
- Java Date and Time Tutorial
- JAVA Current date and time
- Java Date and Time系列(三)- java.util.Date介绍
- Java Date and Time系列(四)- java.sql.Date/java.sql.Time/java.sql.Timestamp介绍
- Joda Time - Java date and time API
- Java Date and Time系列(五)- java.util.Calendar/java.util.GregorianCalendar介绍
- Java Date and Time系列(六)- java.util.TimeZone介绍
- Java Date and Time系列(七)- java.text.SimpleDateFormat介绍
- java convert timestamp to date and time
- PHP date and time
- Formatting Date and Time
- Date and Time
- 整体二分(51nod 雪之国度)
- elasticsearch创建multi-fields字段及修改非multi-fields字段为multi-fields字段及multi-field字段的不同的analyzer进行分析和搜索
- 等待一个内存块
- POS主密钥与工作密钥关联详解
- ZOJ 3469 Food Delivery(* 区间DP 总结)
- Java Date and Time系列
- 滞销品
- 98.leetcode-判断是否有效的二叉排序树
- Android探索之旅(第十四篇)Android中实现炫酷效果的Demo(持续收录中......)
- WebForm使用ajax
- MyISAM与InnoDB区别
- Cmake中的find_package功能
- Redis 配置
- npm 常用指令