快速入门 - Java 基本语法
Java在java.util包中提供了Date类,这个类封装了当前日期和时间,Date类支持两种构造函数。第一种无参构造函数初始化对象new Date(),另外一种有参构造函数,自当前日期凌晨起经过的毫秒数new Date(long millisec)。
Date类调用方法
SN | 方法和描述 |
---|---|
1 | boolean after(Date date) |
如果调用Date对象包含或晚于指定的日期则返回true,否则,返回false。 | |
2 | boolean before(Date date) |
如果调用Date对象包含或早于日期指定的日期返回true,否则,返回false。 | |
3 | Object clone( ) |
重复调用Date对象。 | |
4 | int compareTo(Date date) |
比较日期的调用对象的值。如果这两个值相等返回0。如果调用对象是早于日期返回一个负值。如果调用对象最迟日期返回正值。 | |
5 | int compareTo(Object obj) |
操作以相同的compareTo(Date) 如果obj是一个类日期。否则,它会抛出一个ClassCastException。 | |
6 | boolean equals(Object date) |
如果调用Date对象包含相同的时间及日期指定日期则返回true,否则,返回false。 | |
7 | long getTime( ) |
返回自1970年1月1日起已经过的毫秒数。 | |
8 | int hashCode( ) |
返回调用对象的哈希代码。 | |
9 | void setTime(long time) |
设置所指定的时间,这表示经过时间以毫秒为单位,1970年1月1日从午夜的时间和日期 | |
10 | String toString( ) |
调用Date对象转换为字符串,并返回结果。 |
获取当前日期和时间
在Java中得到当前的日期和时间。可以使用一个简单的Date对象的toString()函数,实例如下:
package com.yoodb.blog;
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 实例化日期对象
Date date = new Date();
System.out.println(date.toString());
}
}
运行结果如下:
Wed Aug 16 10:11:58 CST 2017
日期比较:
使用getTime()函数来获得自1970年1月1日凌晨时,起已经过的毫秒数,然后比较两个对象的值。
使用compareTo()函数,这是由Comparable接口定义和日期执行。
使用SimpleDateFormat格式化日期
SimpleDateFormat是一个具体的类,用于格式化和分析日期的语言环境敏感的方式。 SimpleDateFormat先选择任何用户定义的模式为日期时间格式。
实例:
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("当前时间: " + ft.format(dNow));
}
}
运行结果如下:
当前时间: 星期三 2017.08.16 at 10:19:48 上午 CST
使用时间模式字符串(日期和时间的格式化编码表)。在这个模式中,所有的ASCII字母被保留为模式字母,其定义如下:
字母 | 描述 | 示例 |
---|---|---|
G | 纪元标记 | AD |
y | 四位年份 | 2017 |
M | 月份 | March or 17 |
d | 一个月的某一日期 | 17 |
h | A.M./P.M. (1~12)格式小时 | 12 |
H | 一天中的小时 (0~23) | 23 |
m | 分钟数 | 24 |
s | 秒数 | 54 |
S | 毫秒数 | 212 |
E | 星期几 | Tuesday |
D | 一年中的某一天 | 251 |
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.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化日期对象
Date date = new Date();
// 时间转成字符串输出
String str = String.format("当前日期或时间 : %tc", date );
System.out.printf(str);
}
}
运行结果如下:
当前日期或时间 : 星期三 八月 16 10:24:27 CST 2017
日期和时间转换字符
字符 | 描述 | 实例 |
---|---|---|
c | Complete date and time | Mon May 17 10:25:57 CDT 2017 |
F | ISO 8601 date | 2017-08-16 |
D | U.S. formatted date (month/day/year) | 08/16/2017 |
T | 24-hour time | 19:05:15 |
r | 12-hour time | 07:05:15 pm |
R | 24-hour time, no seconds | 19:05 |
Y | Four-digit year (with leading zeroes) | 2017 |
y | Last two digits of the year (with leading zeroes) | 17 |
C | First two digits of the year (with leading zeroes) | 20 |
B | Full month name | February |
b | Abbreviated month name | Feb |
m | Two-digit month (with leading zeroes) | 08 |
d | Two-digit day (with leading zeroes) | 03 |
e | Two-digit day (without leading zeroes) | 9 |
A | Full weekday name | Monday |
a | Abbreviated weekday name | Mon |
j | Three-digit day of year (with leading zeroes) | 069 |
H | Two-digit hour (with leading zeroes), between 00 and 23 | 18 |
k | Two-digit hour (without leading zeroes), between 0 and 23 | 18 |
I | Two-digit hour (with leading zeroes), between 01 and 12 | 9 |
l | Two-digit hour (without leading zeroes), between 1 and 12 | 9 |
M | Two-digit minutes (with leading zeroes) | 05 |
S | Two-digit seconds (with leading zeroes) | 19 |
L | Three-digit milliseconds (with leading zeroes) | 476 |
N | Nine-digit nanoseconds (with leading zeroes) | 611000000 |
P | Uppercase morning or afternoon marker | PM |
p | Lowercase morning or afternoon marker | pm |
z | RFC 822 numeric offset from GMT | -0800 |
Z | Time zone | PST |
s | Seconds since 1970-01-01 00:00:00 GMT | 1502850876 |
Q | Milliseconds since 1970-01-01 00:00:00 GMT | 1502850903515 |