1. 程式人生 > >java-Date、SimpleDateFotmat、Calendar

java-Date、SimpleDateFotmat、Calendar

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()); } }