JavaSE入门学习32:Java常用类之时间日期相关类
来源:互联网 发布:淘宝怎么买爱奇艺会员 编辑:程序博客网 时间:2024/05/18 03:49
在Java程序中与日期相关的类包括java.util.Date类、java.text.SimpleDateFormat类、java.util.calendar类和
java.util.GregorianCalendar类。在这里我们只是简单地介绍Date类、SimpleDateFormat类和calendar类的使用。
一Date类表示时间
(1)认识Date类
在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用java.util包中的Date类。这个类最主要
的作用就是获取当前时间。java.util包提供了Date类来封装当前的日期和时间。
Date类提供两个构造函数来实例化Date对象:
1)第一个构造函数使用当前日期和时间来初始化对象:
<span style="font-size:18px;">Date( )</span>
2)第二个构造函数接收一个参数,该参数是从1970年1月1日起的微秒数:
<span style="font-size:18px;">Date(long millisec)</span>
Date对象创建以后,可以调用下面的方法:
我们来看下Date类的使用,Java中获取当前日期和时间很简单,使用Date对象的toString()方法来打印当前日期和
时间,如下所示:
实例代码为:
<span style="font-size:18px;">import java.util.*;public class Test{public static void main(String[] args){ //初始化Date对象Date d = new Date();//直接输出日期时间System.out.println(d); //使用toString()函数显示日期时间System.out.println(d.toString());}}</span>使用Date类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出Date对象显示当前的时间,也
可以使用Date对象的toString()方法来打印当前日期和时间显示的结果如下:
准时间,也就是北京时间,东八区),2016代表2016年。
(2)日期比较
Java使用以下三种方法来比较两个日期:
1)使用getTime( )方法获取两个日期(自1970年1月1日经历的微妙数值),然后比较这两个值。
2)使用方法before(),after()和equals()。例如,一个月的12号比18号早,则new Date(99, 2, 12).before(new Date
(99, 2, 18))返回true。
3)使用compareTo()方法,它是由Comparable接口定义的,Date类实现了这个接口。
二使用SimpleDateFormat类格式化日期
从上面的输出结果中,我们发现,默认的时间格式不是很友好,与我们日常看到的日期格式不太一样,如果想要
按指定的格式进行显示,如2016-03-11 09:22:30 ,那该怎么做呢?
SimpleDateFormat类是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat类允许你选择任
何用户自定义日期时间格式来运行。此时就到了java.text包中的SimpleDateFormat类,可以使用 SimpleDateFormat类
来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。
(1)使用format()方法将日期转换为指定格式的文本
实例代码为:
<span style="font-size:18px;">import java.util.*;import java.text.*;public class Test{public static void main(String[] args) throws ParseException{//创建日期格式的字符串Date d = new Date();//创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//调用format()方法,格式化时间,转换为指定格式字符串String day = sdf.format(d);//输出转换后的字符串System.out.println("当前时间:"+ day);}}</span>代码中的"yyyy-MM-dd HH:mm:ss"为预定义格式化字符串, yyyy表示四位年, MM表示两位月份,dd表示两位日
期,HH表示小时(使用24小时制), mm表示分钟, ss表示秒,这样就指定了转换的目标格式,最后调用format()方法
将时间转换为指定的格式的字符串。
运行结果:
(2)使用parse()方法将文本转换为日期
实例代码:
<span style="font-size:18px;">import java.util.*;import java.text.*;public class Test{public static void main(String[] args) throws ParseException{//创建日期格式的字符串String day = "2016年03月01日 10:30:25";//创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//调用parse()方法,将字符串转换为日期Date date = sdf.parse(day);//输出转换后的字符串System.out.println(date);}}</span>代码中的"yyyy年MM月dd日 HH:mm:ss"指定了字符串的日期格式,调用parse()方法将文本转换为日期。
运行结果:
(3)需要注意事项
1)调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,即ParseException,因此需要进行异常处
理,因此这个方法并不会经常使用。
2)使用Date类时需要导入java.util包,使用SimpleDateFormat时需要导入java.text包。
实例代码:
<span style="font-size:18px;">import java.util.*;import java.text.*;public class Test{public static void main(String[] args) throws ParseException{//使用format()方法将日期转换为指定格式的文本SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //创建Date对象,表示当前时间 Date now=new Date(); //调用format()方法,将日期转换为字符串并输出System.out.println(sdf1.format(now));System.out.println(sdf2.format(now));System.out.println(sdf3.format(now));//使用parse(方法将文本转换为日期String d = "2016-3-1 21:05:36";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //调用parse()方法,将字符串转换为日期Date date = sdf.parse(d); System.out.println(date);}}</span>运行结果:
三Calendar类的应用
(1)认识Calendar类
Date类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设
计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用Calendar类进行时间和日期的处理。
java.util.Calendar类是一个抽象类,可以通过调用getInstance()静态方法获取一个 Calendar对象,此对象已由当
前日期时间初始化,即默认代表当前时间,创建一个代表系统当前日期的Calendar对象,如:
<span style="font-size:18px;">Calendar c = Calendar.getInstance();//默认是当前日期</span>
(2)Calendar类对象字段类型
Calendar类中用一下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想:
<span style="font-size:18px;">import java.util.*;public class Test{public static void main(String[] args){//创建Calendar对象Calendar c = Calendar.getInstance();//获取年int year = c.get(Calendar.YEAR);//获取月份,0表示1月份int month = c.get(Calendar.MONTH);//获取日期int day = c.get(Calendar.DAY_OF_MONTH);//获取小时int hour = c.get(Calendar.HOUR_OF_DAY);//获取分钟int minute = c.get(Calendar.MINUTE);//获取秒int second = c.get(Calendar.SECOND);//输出结果System.out.println("当前时间:"+ year + "-" + (month+1) + "-" + day + " " + hour + ":" + minute + ":" + second);}}</span>其中,调用Calendar类的getInstance()方法获取一个实例,然后通过调用get()方法获取日期时间信息,参数为需
要获得的字段的值,Calendar.Year等为Calendar类中定义的静态常量。
运行结果:
(3)Calendar类常用方法
Calendar类提供了getTime()方法,用来获取Date对象,完成Calendar和Date的转换,还可通过getTimeInMillis()
方法,获取此Calendar的时间值,以毫秒为单位。如下所示:
<span style="font-size:18px;">import java.util.*;public class Test{public static void main(String[] args){//创建Calendar对象Calendar c = Calendar.getInstance();//将Calendar对象转换为Date对象Date date = c.getTime();//获取当前秒数Long time = c.getTimeInMillis();//输出结果System.out.println("当前时间:"+ date);System.out.println("当前毫秒数:"+ time);}}</span>运行结果:
<span style="font-size:18px;">import java.util.*;import java.text.*;public class Test{public static void main(String[] args){//创建Canlendar对象Calendar c = Calendar.getInstance(); //将Calendar对象转换为Date对象Date date = c.getTime(); //创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //将日期转换为指定格式的字符串String now = sdf.format(date);System.out.println("当前时间:" + now);}}</span>运行结果:
- JavaSE入门学习32:Java常用类之时间日期相关类
- JavaSE入门学习30:Java常用类之包装类
- JavaSE入门学习31:Java常用类之Math类
- Java常用类之【日期相关类】
- JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类
- JavaSE入门学习27:Java常用类之String类(上)
- JavaSE入门学习28:Java常用类之String类(下)
- JavaSE入门学习19:Java面向对象之抽象类
- JAVASE学习笔记:第八章 常用类Util工具包之日期类、数字类
- JavaSE学习笔记之-----常用类
- Java日期时间相关的类
- JavaSe基础(20)-- 时间日期类
- 时间 日期 相关类
- JAVA菜鸟入门篇 - 时间处理相关类实例:打印该月日期表 (29)
- Java常用类:时间日期类
- 深入理解Java常用类-----时间日期
- java常用类--日期和时间
- JavaSE入门学习34:Java集合框架之Collection接口、子接口及其实现类
- 深入理解Java虚拟机之内存区域与内存溢出
- 强制OOALV运行数据修改事件
- 钱币兑换问题
- HDU 1064 Financial Management
- 51nod 1264判断线段相交
- JavaSE入门学习32:Java常用类之时间日期相关类
- 从今天起开始我的博客生涯。
- 针对mysql基础数据类型测试
- bzoj 4377: [POI2015]Kurs szybkiego czytania 数学
- hdu 2037 今年暑假不AC
- RxJava学习一:初识
- Android中Uri的使用
- 三角形5
- Scala的函数定义、流程控制和异常处理