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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章