Java核心技術卷2 -- 日期和時間

日期格式化和解析

       DateTimeFormatter提供了三種用於打印時間/時期的格式器
       預定義的格式器
       Locale相關的格式器
       帶有定製模式的格式器
       要使用標準的格式器,可以直接調用其format方法。
       Locale格式的就是給人類看的
DateTimeFormatter formatter = DateFormatter.ofLocalizedDateTime(FormatStyle.LONG);
String Formatted = formatter.format(apollo11launch);
       java.time.format.DateTimeFormatter類被設計用來替代java.util.DateFormat
       可以通過制定來定製
       formatter = DateTimeFormatter.ofPattern(“E yyyy-MM-dd”);

解析字符串中的日期/時間值,可以使用parse方法

       LocalDate chur = LocalDate.parse(“2008-04-25”);

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//設置日期格式
		System.out.println(df.format(new Date()));// new Date()爲獲取當前系統時間
		Calendar ca = Calendar.getInstance();// 得到一個Calendar的實例  
		ca.setTime(new Date()); // 設置時間爲當前時間  
		//ca.set(2011, 11, 17);// 月份是從0開始的,所以11表示12月  
		//ca.add(Calendar.YEAR, -1); // 年份減1  
		ca.add(Calendar.MONTH, -3);// 月份減1  
		//ca.add(Calendar.DATE, -1);// 日期減1  
		Date resultDate = ca.getTime(); // 結果  
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
		System.out.println(sdf.format(resultDate)); 

DateFormat不是線程安全的
Date,Calender類都是可以變的。

LocalDate,該類的實例是一個不可變對象,只提供了簡單信息,不包含當天的時間信息

int year = date.getYear();                                //2014
Month month = date.getMonth();//MARCH
int day = date.getDayOfMonth(); //18
DayOfWeek dow = date.getDayOfWeek();//TUESDAY 
int len = date.lengthOfMonth();31(days in MArch)
boolean leap = date.isLeapYear(); //false (not a leap year)

你還可以使用工廠方法從系統時鐘中獲取當前的日期:
LocalDate today = LocalDate.now();

LocalDate date = LocalDate.parse(“2014-03-18”); 靜態方法parse是替代DateFormat推薦替代的。

修改時間

LocalDate date2 = date1.withYear(2011);     //2011-3-18
LocalDate date3 = date2.withDayOfMonth(25); 
LocalDate date4 = date3.with(ChronoField.MONTH_OF_YEAR, 9);

相對方式修改時間

LocalDate date2 = date1.plusWeeks(1);  2014-3-25
LocalDate date3 = date2.minusYears(3); 
LocalDate date4 = date3.plus(6, ChronoUnit.MONTHS);

打印時間

String s1 = date.format(DateTimeFormatter.BASIC_ISO_DATE);  //20140318 
String s2 = date.format(DateTimeFormatter.ISO_LOCAL_DATE); //2014-03-18
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章