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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值