Java常用基础类:Date

Java常用基础类(一):Date


Java的java.util包

  • 提供了Date类,该类封装了当前的日期和时间。Date类支持两个构造函数,如下表所示:
构造函数描述
Date()此构造函数使用当前日期和时间来初始化对象。
Date(long millisec)此构造函数接受一个参数,该参数等于自1970年1月1日午夜以来经过的毫秒数。

Date类的方法:

方法描述
boolean after(Date date)如果调用Date对象包含的日期晚于date指定的日期,则返回true,否则返回false。
boolean before(Date date)如果调用Date对象包含的日期早于date指定的日期,则返回true,否则返回false。
Object clone( )复制调用的Date对象。
int compareTo(Date date)将调用对象的值与date的值进行比较。 如果值相等则返回0。 如果调用对象早于date,则返回负值。 如果调用对象晚于date,则返回正值。
int compareTo(Object obj)如果obj对象是Date类对象,则与compareTo(Date)操作相同。 否则,它会抛出ClassCastException。
boolean equals(Object date)如果调用Date对象包含与date指定的时间和日期相同的时间和日期,则返回true,否则返回false。
long getTime()返回自1970年1月1日以来经过的毫秒数。
int hashCode()返回调用对象的哈希码。
void setTime(long time)设置时间指定的时间和日期,表示从1970年1月1日午夜开始的经过时间(以毫秒为单位)。
String toString( )将调用Date对象转换为字符串并返回结果。

基本使用
  1. 获取当前日期和时间

在Java中获取当前日期和时间的简单方法。可以使用Date对象toString()方法来打印当前日期和时间,如下:

import java.util.Date;
public class Test {

   public static void main(String args[]) {
      // 实例化Date对象
      Date date = new Date();

      // display time and date using toString()
      System.out.println(date.toString());
   }
}
  1. 使用SimpleDateFormat设置日期格式

SimpleDateFormat是一个具体的类,用于以区域设置的方式格式化和解析日期。 SimpleDateFormat用于从为日期时间格式选择用户定义的模式。

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {

    public static void main(String args[]) {
        Date dNow = new Date();
        SimpleDateFormat ft = new SimpleDateFormat("yyyy.MM.dd (E)'at' hh:mm:ss a zzz");

        System.out.println("Current Date: " + ft.format(dNow));

        SimpleDateFormat ft2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        System.out.println("Current Datetime: " + ft2.format(dNow));

    }
}

DateFormat格式代码

要指定时间格式,请使用时间模式字符串。 在此模式中,所有ASCII字母都保留为模式字母,如下所示:

字符描述示全歼
G时代指示符AD
y四位数的年份值2019
M月份July or 07
d10
h小时 A.M./P.M. (1~12)12
H24小时制的小时表示 (0~23)22
m分钟30
s秒钟55
S毫秒234
E星期几Tuesday
D一年中的第几天360
F一个月中的某一天2 (second Wed. in July)
w一年中的第几个星期40
W一月中的第几个星期1
aA.M./P.M. 标记PM
k小时 (1~24)24
K小时 A.M./P.M. (0~11)10
z时区Eastern Standard Time
转义文本Delimiter
单引号
  1. 使用printf格式化日期

使用printf方法来完成日期和时间格式化。使用双字母格式,以t开头并以表格的一个字母结尾,如下所示:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {

    public static void main(String args[]) {
        // Instantiate a Date object
        Date date = new Date();

        // display time and date
        String str = String.format("Current Date/Time : %tc", date);

        System.out.printf(str);

    }
}

如果多次提供日期来格式化每个部分,那多少会有点愚蠢。 格式字符串可以指示要格式化的参数的索引。

索引必须紧跟%,并且必须以$结尾。

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {

    public static void main(String args[]) {
        // Instantiate a Date object
        Date date = new Date();

        // display time and date
        System.out.printf("%1ss %2stB %2td,td, %2td,tY", "Due date:", date);
    }
}

或者,可以使用<标志。 它表示再次使用与前面的格式规范相同的参数。

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {

    public static void main(String args[]) {
        // Instantiate a Date object
        Date date = new Date();

        // display formatted date
        System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
    }
}
  1. 日期和时间转换字符

更多详细信息,请参阅Java标准文档。

字符描述示例
c完全日期和时间Mon May 04 09:51:52 CDT 2019
FISO 8601 date2004-02-09
DU.S. formatted date (month/day/year)02/09/2004
T24小时时间18:05:19
r12小时时间06:05:19 pm
R24小时时间, 无秒钟。18:05
Y四位数年份(前导零)2019
y年份的最后两位数(带前导零)19
C年份的前两位数(带前导零)20
B月份全名称February
b缩写的月份名称Feb
m两位数月份(带前导零)02
d两位数的日期(带前导零)03
e两位数的日期(没有前导零)9
A完整的工作日名称Monday
a缩写的工作日名称Mon
j一年中的三位数日(带前导零)069
H两位数小时(前导零),介于00和23之间18
k两位数小时(不带前导零),介于0和23之间18
I两位数小时(前导零),介于01和12之间06
l两位数小时(不带前导零),介于1和12之间6
M两位数分钟(带前导零)05
S两位数秒(带前导零)19
L三位数毫秒(带前导零)047
N九位纳秒(带前导零)047000000
P大写上午或下午标记PM
p小写上午或下午标记pm
zGMT的RFC 822数字偏移量-0800
Z时区PST
s自1970-01-01 00:00:00 GMT以来的秒数1078884319
Q自1970-01-01 00:00:00 GMT以来的毫秒数1078884319047
  1. 将字符串解析为日期

SimpleDateFormat类有一些额外的方法,比如是parse(),它用于根据存储在给定的SimpleDateFormat对象中的格式来解析字符串。

import java.util.*;
import java.text.*;

public class Test {

    public static void main(String args[]) {
        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
        String input = args.length == 0 ? "2019-11-11" : args[0];

        System.out.print(input + " 解析为:");
        Date t;
        try {
            t = ft.parse(input);
            System.out.println(t);
        } catch (ParseException e) {
            System.out.println("Unparseable using " + ft);
        }
    }
}

执行上面示例代码,得到以下结果:

2019-11-11 解析为:Mon Nov 11 00:00:00 CST 2019
  1. 睡眠一段时间

可以在计算机生命周期的任何时间段内睡眠。 程序睡眠3秒钟 :

import java.util.*;
import java.text.*;

public class Test {

    public static void main(String args[]) {
        try {
            System.out.println(new Date());
            Thread.sleep(5 * 60 * 10);
            System.out.println(new Date());
        } catch (Exception e) {
            System.out.println("Got an exception!");
        }
    }
}
  1. 测量经过的时间

如果需要以毫秒为单位测量时间点。 重写上面的例子:

import java.util.*;
import java.text.*;

public class Test {

    public static void main(String args[]) {
        try {
            long start = System.currentTimeMillis();
            System.out.println(new Date());

            Thread.sleep(5 * 60 * 10);
            System.out.println(new Date());

            long end = System.currentTimeMillis();
            long diff = end - start;
            System.out.println("时间差为: " + diff);
        } catch (Exception e) {
            System.out.println("Got an exception!");
        }
    }
}

最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈永佳

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值