700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java中Calendar用法与Date用法(详细)

Java中Calendar用法与Date用法(详细)

时间:2021-04-11 19:58:58

相关推荐

Java中Calendar用法与Date用法(详细)

目录

一、常用类Calendar

Calendar 编程实例

二、常用类Date

Date 编程实例

一、常用类Calendar

在早期的 JDK 版本中,Date 类附有两大功能:

允许用年、月、日、时、分、秒来解释日期。允许对表示日期的字符串进行格式化和句法分析。

在 JDK1.1 中提供了类 Calendar 来完成第一种功能,类 DateFormat 来完成第二项功能。DateFormat 是java.text包中的一个类。与 Date 类有所不同的是,DateFormat 类可以接受用各种语言和不同习惯表示的日期字符串。

但是 Calendar 类是一个抽象类,它完成 Date 类与普通日期表示法之间的转换,而我们更多的是使用 Calendar 类的子类 GregorianCalendar 类。它实现了世界上普遍使用的公历系统。当然我们也可以继承 Calendar 类,然后自己定义实现日历方法。

先来看一看 GregorianCalendar 类的构造函数:

TimeZone 是java.util包中的一个类,其中封装了有关时区的信息。每一个时区对应一组 ID。类 TimeZone 提供了一些方法完成时区与对应 ID 两者之间的转换。

例如:

//太平洋时区的 ID 为 PSTTimeZone tz0 = TimeZone.getTimeZone("PST")//getDefault()可以获取主机所处时区的对象TimeZone tz1 = TimeZone.getDefault()

Locale 只是一种机制,它用来标识一个特定的地理、政治或文化区域获取一个 Locale 对象的构造方法:

//调用Locale类的构造方法Locale l0 = new Locale(String language)Locale l1 = new Locale(String language, String country)Locale l2 = new Locale(String languge, String country, String variant)//调用Locale类中定义的常量Locale l1 = Locale.CHINA

Calendar 编程实例

新建源代码文件CalendarDemo.java

import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class CalendarDemo {public static void main(String[] args) {System.out.println("完整显示日期时间:");// 字符串转换日期格式DateFormat fdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str = fdate.format(new Date());System.out.println(str);// 创建 Calendar 对象Calendar calendar = Calendar.getInstance();// 初始化 Calendar 对象,但并不必要,除非需要重置时间calendar.setTime(new Date());// 显示年份System.out.println("年: " + calendar.get(Calendar.YEAR));// 显示月份 (从0开始, 实际显示要加一)System.out.println("月: " + calendar.get(Calendar.MONTH));// 当前分钟数System.out.println("分钟: " + calendar.get(Calendar.MINUTE));// 今年的第 N 天System.out.println("今年的第 " + calendar.get(Calendar.DAY_OF_YEAR) + "天");// 本月第 N 天System.out.println("本月的第 " + calendar.get(Calendar.DAY_OF_MONTH) + "天");// 3小时以后calendar.add(Calendar.HOUR_OF_DAY, 3);System.out.println("三小时以后的时间: " + calendar.getTime());// 格式化显示str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());System.out.println(str);// 重置 Calendar 显示当前时间calendar.setTime(new Date());str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());System.out.println(str);// 创建一个 Calendar 用于比较时间Calendar calendarNew = Calendar.getInstance();// 设定为 5 小时以前,后者大,显示 -1calendarNew.add(Calendar.HOUR, -5);System.out.println("时间比较:" + pareTo(calendar));// 设定7小时以后,前者大,显示 1calendarNew.add(Calendar.HOUR, +7);System.out.println("时间比较:" + pareTo(calendar));// 退回 2 小时,时间相同,显示0calendarNew.add(Calendar.HOUR, -2);System.out.println("时间比较:" + pareTo(calendar));// calendarNew创建时间点System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendarNew.getTime()));// calendar创建时间点System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()));System.out.println("时间比较:" + pareTo(calendar));}}

编译运行:

完整显示日期时间:-09-05 18:41::月:8分钟:41今年的第248天本月的第5天三个小时以后的时间:Sun Sep 05 21:41:19 CST -09-05 21:41:19:591-09-05 18:41:19:593时间比较:-1时间比较:1时间比较:0-09-05 18:41:19:593-09-05 18:41:19:593时间比较:0

大家运行上面的代码后,看见控制台上的输出结果会不会有所疑问呢?

其实month的含义与 Date 类相同,0 代表 1 月,11 代表 12 月。

有的同学可能不明白最后一个的输出为什么有时是 0 ,有时是 1,在这里会涉及到calendarNewcalendar的创建时间点,calendarNew经过增加和减少时间后恢复到原来的时间点,也就是最终比较的是谁先创建好,时间点靠后的大一些,而calendarNew创建的时间点只有可能是大于等于calendar的,需要根据实际的创建时间点进行比较。

二、常用类Date

Date 类表示日期和时间,里面封装了操作日期和时间的方法。Date 类经常用来获取系统当前时间。

来看看类 Date 中定义的未过时的构造方法:

Date 编程实例

新建一个源代码文件DateDemo.java

import java.text.SimpleDateFormat;import java.util.Date;public class DateDemo {public static void main(String[] args) {String strDate, strTime;Date objDate = new Date();System.out.println("今天的日期是:" + objDate);long time = objDate.getTime();System.out.println("自1970年1月1日起以毫秒为单位的时间(GMT):" + time);strDate = objDate.toString();//提取 GMT 时间strTime = strDate.substring(11, (strDate.length() - 4));//按小时、分钟和秒提取时间strTime = "时间:" + strTime.substring(0, 8);System.out.println(strTime);//格式化时间SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(formatter.format(objDate));}}

编译运行:

今天的日期是:Sun Sep 05 18:51:10 CST 自1970年1月1日起以毫秒为单位的时间(GMT):1630839070659时间:18:51:10-09-05 18:51:10

Date 类的很多方法自 JDK 1.1 开始就已经过时了。

具体为什么Java 的Date类从1970年1月1日开始计时,看下面这篇文章详解:

Java的Date类的时间从为什么是从1970年1月1日开始?_DayDayUp-CSDN博客

-------------------------------------------------------------以下无正文----------------------------------------------------

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。