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对象转换为字符串并返回结果。 |
基本使用
- 获取当前日期和时间
在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());
}
}
- 使用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 |
d | 日 | 10 |
h | 小时 A.M./P.M. (1~12) | 12 |
H | 24小时制的小时表示 (0~23) | 22 |
m | 分钟 | 30 |
s | 秒钟 | 55 |
S | 毫秒 | 234 |
E | 星期几 | Tuesday |
D | 一年中的第几天 | 360 |
F | 一个月中的某一天 | 2 (second Wed. in July) |
w | 一年中的第几个星期 | 40 |
W | 一月中的第几个星期 | 1 |
a | A.M./P.M. 标记 | PM |
k | 小时 (1~24) | 24 |
K | 小时 A.M./P.M. (0~11) | 10 |
z | 时区 | Eastern Standard Time |
‘ | 转义文本 | Delimiter |
’ | 单引号 | ’ |
- 使用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);
}
}
- 日期和时间转换字符
更多详细信息,请参阅Java标准文档。
字符 | 描述 | 示例 |
---|---|---|
c | 完全日期和时间 | Mon May 04 09:51:52 CDT 2019 |
F | ISO 8601 date | 2004-02-09 |
D | U.S. formatted date (month/day/year) | 02/09/2004 |
T | 24小时时间 | 18:05:19 |
r | 12小时时间 | 06:05:19 pm |
R | 24小时时间, 无秒钟。 | 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 |
z | GMT的RFC 822数字偏移量 | -0800 |
Z | 时区 | PST |
s | 自1970-01-01 00:00:00 GMT以来的秒数 | 1078884319 |
Q | 自1970-01-01 00:00:00 GMT以来的毫秒数 | 1078884319047 |
- 将字符串解析为日期
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
- 睡眠一段时间
可以在计算机生命周期的任何时间段内睡眠。 程序睡眠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!");
}
}
}
- 测量经过的时间
如果需要以毫秒为单位测量时间点。 重写上面的例子:
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!");
}
}
}
最后
-
更多参考精彩博文请看这里:《陈永佳的博客》
-
喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!