java-Date、SimpleDateFotmat、Calendar
阿新 • • 發佈:2019-02-14
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* java中的時間使用標準類庫的Date類表示,是用距離一個固定時間點的毫秒數(可正可負 long型別)表達一個特定的時間點
* 距離UTC(世界調整時間) 1970年1月1日 00:00:00 CST
*java.util.Date類封裝日期及時間資訊,由於Date設計存在缺陷,所以在jdk1.1以後大部分方法被宣告過時的,不再建議使用。
*現在僅僅用來表示時間。而與時間相關的操作全部使用Calendar來替代
*
*/
public class DateDemo {
public static void main(String[] args) throws ParseException {
Date date=new Date();
//系統當前的日期及時間資訊,Date重寫了toString()方法,用一個字串來描述當前Date物件所表示的時間。
System.out.println(date);//Sat Jul 29 09:39:49 CST 2017
/**使用setTime和getTime設定及獲取時間**/
long time=date.getTime();
System.out.println(time);//1970年1月1日至今的毫秒數
time+=60*60*24*1000;
date.setTime(time);
System.out.println(date);//Sun Jul 30 09:57:35 CST 2017
/**
* SimpleDateFormat
* java.text.SimpleDateFormat是一個以與語言環境有關的方式來格式化和解析日期的具體類。允許日期->文字,文字->日期
* y:年 M:月 d:日 H:24小時制 h:12小時制 m:分鐘 s:秒 E:星期 a:上午下午
* String format(Date date)按照SDF指定的日期格式將給定的date表示的日期轉換為字串
* Date parse(String str)方法用於按照特定格式將表示是安靜的字串轉換為Date物件
*/
Date now=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 -E-a HH:mm:ss");//2017年07月29日 -星期六-下午 15:33:10
System.out.println(sdf.format(now));//日期轉換字串
String str="2017-07-12 15:12";
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm");
System.out.println(sdf1.parse(str));//字串轉換為時間
/**
* Calendar
* java.util.Calendar類用於封裝日曆資訊,其主要作用在於方法可以對時間分量進行運算
* Calendar是抽象類,其具體子類針對於不同國家的日曆系統,其中應用最廣泛的是GregorianCalendar(格里高利曆,陽曆)
* Calendar提供了一個靜態方法getInstance來更具當前系統所在地區返回一個適用的實現類,大部分地區返回的都是陽曆實現類
*
* Date getTime():Calendar提供的該方法可以獲取一個Date物件,該物件就表示當前Calendar所表示的日期
* void setTime(Date date):使當前Calendar表示給定的Date所表示的日期
*/
Calendar calendar=Calendar.getInstance();//當前系統時間
System.out.println(calendar);//重寫了toString,但是直觀看不出日期
Date date1=calendar.getTime();
System.out.println(date1);
/**
* Calendar提供了方法:
* int get(int field):該方法可以獲取當前Calendar中指定時間分量所對應的值
* 時間分量是一個int值,在Calendar中有大量的常量定義了不同的時間分量
*/
int year=calendar.get(Calendar.YEAR);//年
int month=calendar.get(Calendar.MONTH)+1;//月 是從0開始的
int day=calendar.get(Calendar.DAY_OF_MONTH);//月中的天 幾號
int day1=calendar.get(Calendar.DAY_OF_WEEK);//週中的天 星期幾
int day2=calendar.get(Calendar.DAY_OF_YEAR);//年中的天 今年的第幾天
int day3=calendar.get(Calendar.DATE);//DATE等同於DAY_OF_MONTH 月中的天
int hour=calendar.get(Calendar.HOUR);//12小時制
int hour1=calendar.get(Calendar.HOUR_OF_DAY);//24小時制
int minute=calendar.get(Calendar.MINUTE);//分鐘
int second=calendar.get(Calendar.SECOND);//秒
System.out.println(year+"-"+month+"-"+day+"-"+hour1+":"+minute+":"+second);//2017-7-29-15:33:10
/**int getActualMaximum(int field):給定此Calendar的時間值,返回指定日曆欄位可能擁有的最大值**/
int max=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("本月"+max+"天");//本月31天
System.out.println("本年"+calendar.getActualMaximum(Calendar.DAY_OF_YEAR)+"天");//本年365天
/**
* void set(int field,int value)
* 對指定時間分量設定指定的值
* 表示2008-08-13 20:07:46
*/
calendar.set(Calendar.YEAR, 2008);
calendar.set(Calendar.MONTH,Calendar.AUGUST);
calendar.set(Calendar.DAY_OF_MONTH,13);
calendar.set(Calendar.HOUR_OF_DAY,20);
calendar.set(Calendar.MINUTE, 7);
calendar.set(Calendar.SECOND, 46);
System.out.println(calendar.getTime());//Wed Aug 13 20:07:46 CST 2008
/**
* void add(int field,int value)
* 對指定時間分量加上給定的值,若給定對的值為負數則是減去給定的值
*/
Calendar c=Calendar.getInstance();
c.add(Calendar.YEAR, 3);//加三年
c.add(Calendar.MONDAY, 2);//加2個月
c.add(Calendar.DAY_OF_YEAR, 5);//加5天
// c.set(Calendar.DAY_OF_WEEK, 2);//設定為當週的週一
System.out.println(c.getTime());
}
}