Date類(lèi)
java.util提供了Date類(lèi)來(lái)封裝日期和時(shí)間。
Date();--當(dāng)前時(shí)間
Date(long millisec);--距離格林威治時(shí)間1970年1月1日millisec毫秒的時(shí)間
new Date().getTime() 時(shí)間戳
System.currentTimeMillis() 取得系統(tǒng)當(dāng)前時(shí)間秒數(shù)
/**
SimpleDateFormat函數(shù)語(yǔ)法:
G 年代標(biāo)志符
y 年
M 月
d 日
h 時(shí) 在上午或下午 (1~12)
H 時(shí) 在一天中 (0~23)
m 分
s 秒
S 毫秒
E 星期
D 一年中的第幾天
F 一月中第幾個(gè)星期幾
w 一年中第幾個(gè)星期
W 一月中第幾個(gè)星期
a 上午 / 下午 標(biāo)記符
k 時(shí) 在一天中 (1~24)
K 時(shí) 在上午或下午 (0~11)
z 時(shí)區(qū)
*/
Date now = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
// Current Date: 星期六 2018.11.10 at 12:28:40 上午 CST
System.out.println("Current Date: " + ft.format(now));
String time = "星期六 2018.11.10 at 12:28:40 上午 CST";
Date date = ft.parse(time);
// Sat Nov 10 00:28:40 CST 2018
System.out.println(date);
// 取得系統(tǒng)當(dāng)前時(shí)間秒數(shù)
System.out.println(System.currentTimeMillis());
Calendar類(lèi)
Set設(shè)置
Calendar c1 = Calendar.getInstance();
調(diào)用:
public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar對(duì)象c1的年月日分別設(shè)這為:2009、6、12
利用字段類(lèi)型設(shè)置
如果只設(shè)定某個(gè)字段,例如日期的值,則可以使用如下set方法:
public void set(int field,int value)
把 c1對(duì)象代表的日期設(shè)置為10號(hào),其它所有的數(shù)值會(huì)被重新計(jì)算
c1.set(Calendar.DATE,10);
把c1對(duì)象代表的年份設(shè)置為2008年,其他的所有數(shù)值會(huì)被重新計(jì)算
c1.set(Calendar.YEAR,2008);
其他字段屬性set的意義以此類(lèi)推Add設(shè)置
Calendar c1 = Calendar.getInstance();
把c1對(duì)象的日期加上10,也就是c1也就表示為10天后的日期,其它所有的數(shù)值會(huì)被重新計(jì)算
c1.add(Calendar.DATE, 10);
把c1對(duì)象的日期減去10,也就是c1也就表示為10天前的日期,其它所有的數(shù)值會(huì)被重新計(jì)算
c1.add(Calendar.DATE, -10);Calendar類(lèi)對(duì)象信息的獲得
Calendar c1 = Calendar.getInstance();
// 獲得年份
int year = c1.get(Calendar.YEAR);
// 獲得月份
int month = c1.get(Calendar.MONTH) + 1;
// 獲得日期
int date = c1.get(Calendar.DATE);
// 獲得小時(shí)
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 獲得分鐘
int minute = c1.get(Calendar.MINUTE);
// 獲得秒
int second = c1.get(Calendar.SECOND);
// 獲得星期幾(注意(這個(gè)與Date類(lèi)是不同的):1代表星期日、2代表星期1、3代表星期二,以此類(lèi)推)
int day = c1.get(Calendar.DAY_OF_WEEK);
Instant類(lèi)
所謂的 Instant 類(lèi)代表的是某個(gè)時(shí)間(有點(diǎn)像 java.util.Date),它是精確到納秒的(而不是象舊版本的Date精確到毫秒)。如果使用納秒去表示一個(gè)時(shí)間則原來(lái)使用一位Long類(lèi)型是不夠的,需要占用更多一點(diǎn)的存儲(chǔ)空間,實(shí)際上其內(nèi)部是由兩個(gè)Long字段組成,第一個(gè)部分保存的是自標(biāo)準(zhǔn)Java計(jì)算時(shí)代(就是1970年1月1日開(kāi)始)到現(xiàn)在的秒數(shù),第二部分保存的是納秒數(shù)(永遠(yuǎn)不會(huì)超過(guò)999,999,999)。
Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
System.out.println("秒數(shù):"+now.getEpochSecond());
System.out.println("毫秒數(shù):"+now.toEpochMilli());