Java知多少(77)日期和时间类

时间:2022-09-11 20:46:56

Java 的日期和时间类位于 java.util 包中。利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间。

Date 类

Date 类是 Java 中的日期时间类,其构造方法比较多,下面是常用的两个:

  • Date():使用当前的日期和时间初始化一个对象。
  • Date(long millisec):从1970年01月01日00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒。如果运行 Java 程序的本地时区是北京时区(与格林威治时间相差 8 小时),Date dt1=new Date(1000);,那么对象 dt1 就是1970年01月01日08时00分01秒。

请看一个显示日期时间的例子:

 import java.util.Date;
public class Demo{
public static void main(String args[]){
Date da=new Date(); //创建时间对象
System.out.println(da); //显示时间和日期
long msec=da.getTime();
System.out.println("从1970年1月1日0时到现在共有:" + msec + "毫秒");
}
}

运行结果:

Mon Feb 05 22:50:05 CST 2007
从1970年1月1日0时到现在共有:1170687005390 毫秒

一些比较常用的 Date 类方法:

方法 功能
boolean after(Date date) 若调用 Date 对象所包含的日期比 date 指定的对象所包含的日期晚,返回 true,否则返回 false。
boolean before(Date date) 若调用 Date 对象所包含的日期比 date 指定的对象所包含的日期早,返回 true,否则返回 false。
Object clone() 复制调用 Date 对象。
int compareTo(Date date) 比较调用对象所包含的日期和指定的对象包含的日期,若相等返回 0;若前者比后者早,返回负值;否则返回正值。
long getTime() 以毫秒数返回从 1970 年 01 月 01 日 00 时到目前的时间。
int hashCode() 返回调用对象的散列值。
void setTime(long time) 根据 time 的值,设置时间和日期。time 值从 1970 年 01 月 01 日 00 时开始计算。
String toString() 把调用的 Date 对象转换成字符串并返回结果。
public Static String valueOf(type variable) 把 variable 转换为字符串。

Date 对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。若需要修改时间显示的格式可以使用“SimpleDateFormat(String pattern)”方法。

例如,用不同的格式输出时间:

 import java.util.Date;
import java.text.SimpleDateFormat;
public class Demo{
public static void main(String args[]){
Date da=new Date();
System.out.println(da);
SimpleDateFormat ma1=new SimpleDateFormat("yyyy 年 MM 月 dd 日 E 北京时间");
System.out.println(ma1.format(da));
SimpleDateFormat ma2=new SimpleDateFormat("北京时间:yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒");
System.out.println(ma2.format(-1000));
}
}

运行结果:

Sun Jan 04 17:31:36 CST 2015
2015 年 01 月 04 日 星期日 北京时间
北京时间:1970 年 01 月 01 日 07 时 59 分 59 秒

Calendar 类

抽象类 Calendar 提供了一组方法,允许把以毫秒为单位的时间转换成一些有用的时间组成部分。Calendar 不能直接创建对象,但可以使用静态方法 getInstance() 获得代表当前日期的日历对象,如:
    Calendar calendar=Calendar.getInstance();
该对象可以调用下面的方法将日历翻到指定的一个时间:

 void set(int year,int month,int date);
void set(int year,int month,int date,int hour,int minute);
void set(int year,int month,int date,int hour,int minute,int second);

若要调用有关年份、月份、小时、星期等信息,可以通过调用下面的方法实现:

int get(int field);
其中,参数 field 的值由 Calendar 类的静态常量决定。其中:YEAR 代表年,MONTH 代表月,HOUR 代表小时,MINUTE 代表分,如:
    calendar.get(Calendar.MONTH);
如果返回值为 0 代表当前日历是一月份,如果返回 1 代表二月份,依此类推。

由 Calendar 定义的一些常用方法如下表所示:

方法 功能
abstract void add(int which,int val) 将 val 加到 which 所指定的时间或者日期中,如果需要实现减的功能,可以加一个负数。which 必须是 Calendar 类定义的字段之一,如 Calendar.HOUR
boolean after(Object calendarObj) 如果调用 Calendar 对象所包含的日期比 calendarObj 指定的对象所包含的日期晚,返回 true,否则返回 false
boolean before(Object calendarObj) 如果调用 Calendar 对象所包含的日期比 calendarObj 指定的对象所包含的日期早,返回 true,否则返回 false
final void clear() 对调用对象包含的所有时间组成部分清零
final void clear(int which) 对调用对象包含的 which 所指定的时间组成部分清零
boolean equals(Object calendarObj) 如果调用 Calendar 对象所包含的日期和 calendarObj 指定的对象所包含的日期相等,返回 true,否则返回 false
int get(int calendarField) 返回调用 Calendar 对象的一个时间组成部分的值,这个组成部分由 calendarField指定,可以被返回的组成部分如:Calendar.YEAR,Calendar.MONTH 等
static Calendar getInstance() 返回使用默认地域和时区的一个 Calendar 对象
final Date getTime() 返回一个和调用对象时间相等的 Date 对象
final boolean isSet(int which) 如果调用对象所包含的 which 指定的时间部分被设置了,返回 true,否则返回 false
final void set(int year,int month) 设置调用对象的各种日期和时间部分
final void setTime(Date d) 从 Date 对象 d 中获得日期和时间部分
void setTimeZone(TimeZone t) 设置调用对象的时区为 t 指定的那个时区

GregorianCalendar 类

GregorianCalendar 是一个具体实现 Calendar 类的类,该类实现了公历日历。Calendar 类的 getInstance() 方法返回一个 GregorianCalendar,它被初始化为默认的地域和时区下的当前日期和时间。

GregorianCalendar 类定义了两个字段:AD 和 BC,分别代表公元前和公元后。其默认的构造方法 GregorianCalendar() 以默认的地域和时区的当前日期和时间初始化对象,另外也可以指定地域和时区来建立一个 GregorianCalendar 对象,例如:

 GregorianCalendar(Locale locale);
GregorianCalendar(TimeZone timeZone);
GregorianCalendar(TimeZone timeZone,Locale locale);

GregorianCalendar 类提供了 Calendar 类中所有的抽象方法的实现,同时还提供了一些附加的方法,其中用来判断闰年的方法为:

Boolean isLeapYear(int year);
如果 year 是闰年,该方法返回 true,否则返回 false。

系列文章:

Java知多少(77)日期和时间类的更多相关文章

  1. 20 个案例教你在 Java 8 中如何处理日期和时间?

    前言 前面一篇文章写了<SimpleDateFormat 如何安全的使用?>, 里面介绍了 SimpleDateFormat 如何处理日期/时间,以及如何保证线程安全,及其介绍了在 Jav ...

  2. Java获取当前的日期和时间

    Java获取当前的日期和时间 1.具体实现方法如下 /** * @Title:DateTime.java * @Package:com.you.model * @Description:获取当前的日期 ...

  3. Java知多少(99)Graphics2D类的绘图方法

    Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供.坐标转换.颜色管理以及文字布局等更精确的 ...

  4. Java8 日期和时间类

    新的日期和时间API 新的日期和时间类解决了Date和Calendar类出现的问题 浅尝 LocalDate 日期类 LocalDate of = LocalDate.of(2018, 7, 13); ...

  5. java 日期与时间类

    1.Date类:  https://www.cnblogs.com/huangminwen/p/5994927.html 2.DateFormat和SimpleDateFormat (simple简单 ...

  6. Java8与传统的日期和时间类详解

    一.传统的日期时间类(Date和Calendar) 1. Date类 这里的Date是位于java.util包下的类,而不是java.sql包下的date类,Date对象即包含日期也包含时间,从JDK ...

  7. JAVA核心技术I---JAVA基础知识(时间类)

    一:时间类库了解 java.util.Date(基本废弃,Deprecated) –getTime(),返回自1970..1以来的毫秒数 java.sql.Date(和数据库对应的时间类) //与数据 ...

  8. Java中的操作日期的工具类

    import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

  9. Java 向MySql 插入日期和时间正确的姿势

    Mysql和Java之间时间对应关系表: date              java.sql.Date Datetime        java.sql.Timestamp Timestamp    ...

随机推荐

  1. 最大化 AIX 上的 Java 性能,第 5 部分&colon; 参考资料和结论

    http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf5.html 最大化 AIX 上的 Java 性能,第 ...

  2. Hive基础之Hive开启查询列名及行转列显示

    Hive默认情况下查询结果里面是只显示值: hive> select * from click_log; OK ad_101 :: ad_102 :: ad_103 :: ad_104 :: a ...

  3. HW--自守数

    package testcase; import huawei.Demo; import junit.framework.TestCase;//加入测试框架,不需要写Main函数 public cla ...

  4. Aptana&ZeroWidthSpace; &ZeroWidthSpace;S&ZeroWidthSpace;t&ZeroWidthSpace;u&ZeroWidthSpace;d&ZeroWidthSpace;i&ZeroWidthSpace;o 安装

    Aptana Studio 是一个集成式的Web应用程序开发环境,它不仅可以作为独立的程序运行,而且还可以作为Eclipse插件使用. AptanaStudio是一个基于Eclipse的集成式Web开 ...

  5. 源文件名和public 类名

    问题: 源文件名和类名不一样 解决方法:将源文件的文件名test修改成Test 

  6. keil 中用函数指针调用函数的参数限制

    NSIC中,通过函数指针调用的函数的参数的个数没有限制,但是KeilC对此有限制,至多3个参数.因为,KeilC编译时,无法通过函数指针找到该函数的局部数据段,也就无法通过局部数据段传递参数,只能通过 ...

  7. This 关键字和变量作用域

    public class Number {     int count; public void method01(){ //    int count=3;     count=3; //    t ...

  8. SALM入门笔记&lpar;1&rpar;:特征点的匹配

    SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...

  9. ORACLE透明网关访问SQL Server配置总结

      透明网关概念 ORACLE透明网关(Oracle Transparent Gateway)可以解决ORACLE数据库和非ORACLE数据库交互数据的需求.在一个异构的分布式环境中,通过ORACLE ...

  10. 火车头采集器如何采集QQ群成员中的QQ号

    如何采集QQ群群员QQ号,采集QQ号,批量采集QQ号 众所周知,QQ群群员QQ号无法导出,即使会员也不可以,那我们只能通过三方工具来实现我们的要求,那今天我们讲讲如何通过火车采集器来采集QQ群群员QQ ...