玩转日期类(Dare,Calendar,SimpleDateFormat)

 Java中玩转日期总共就用到3个类:
 * 1)java.util.Date日期类:
 *     用于表示或存储精确值(long型值),
 *     通常用于进行精确值的获取或计算,用计算后的精确值创建一个新的日期对象
 *     精确值=当前日期时间距离“1970年1月1日0时0分0秒0毫秒”所经过的毫秒值
 * 2)java.util.Calendar日历类:
 *   提供了很多日期时间方面的操作运算功能,
 *   如:获取年月日、时分秒、星期几等,也可进行以这些为单位的运算
 * 3)java.text.DateFormat(其子类SimpleDateFormat)日期格式化类:
 *   用于“日期文本串”和“日期对象”之间的转换,
 *   如 "字符串格式的日期"-->日期对象 ,日期对象-->“指定格式的字符串”
public class DateDemo {
	  @Test
	  public void Datedemo(){
		  Date d1=new Date();//当前日期时间
		  System.out.println(d1.toString());
		  long lg=d1.getTime();
		  System.out.println("lg1:"+lg);
		  
		//一天以后(精确值计算)
			lg = lg + 24*60*60*1000L; //注意,常量值后面要加L,否则bug
			System.out.println("lg2:"+lg);
			
		//把计算后的精确值重新封装成一个Date对象
		Date d2 = new Date(lg);
		System.out.println(d2.toString());
		
		//有关Date中的获取年月日时分秒等功能全部过时,以后采用Calender来实现
		int y = d2.getYear(); //返回值为: 日期的年份-1900
		System.out.println("y:"+(y+1900));
		
		//计算程序执行时间:
		long t1 = new Date().getTime();//程序开始位置
		int s=0;
		for(int i=0;i<1000000;i++){
			s++;
			s*=12345;
		}
		long t2 = new Date().getTime();//程序结束位置
		System.out.println("耗时(毫秒):"+(t2-t1));
	  } 
	  
	  
	  @Test
	  public void calendar(){
		  //日历对象要用工厂方法来创建对象
		  Calendar c=Calendar.getInstance();
		 //获取/设置日期中的年月日时分秒等字段值,都是用get(int field)/set(int field)方法
		  int year=c.get(Calendar.YEAR);
		  System.out.println("year:"+year);
		  int day=c.get(Calendar.DAY_OF_MONTH);
		  System.out.println("day:"+day);
		  int hour1 = c.get(Calendar.HOUR);//12小时格式
		  System.out.println("Hour1:"+hour1);
		  int hour2 = c.get(Calendar.HOUR_OF_DAY);//24小时格式
		  System.out.println("Hour1:"+hour2);
		  
		  int day1 = c.get(Calendar.DAY_OF_YEAR);//该年的第几天
		  int day2 = c.get(Calendar.DAY_OF_MONTH);//该月的第几天
		  int day3 = c.get(Calendar.DAY_OF_WEEK) -1;//星期几--1为Sunday,2为Monday,...
		  int day4 = c.get(Calendar.DAY_OF_WEEK_IN_MONTH);//该月的第几周
		  System.out.println(day1+","+day2+","+day3+","+day4);
		  
		  int month = c.get(Calendar.MONTH)+1; //一月为0,二月为1
		  System.out.println("Month:"+month);
		  
		  c.set(Calendar.YEAR, 2020);
		  //可以进行以年月日时分秒等为单位的加减运算
		  c.add(Calendar.HOUR, -4800);
		  System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月");
		  
		 	  
		 //Calendar与Date的相互转换
		 //Calendar-->Date
		  Date d=c.getTime();
		  System.out.println(d);
		  //Date-->Calendar
		  Calendar c2 = Calendar.getInstance();
		  c2.setTime( new Date() );
		  System.out.println( c2.get(Calendar.MINUTE) +"分");
	  }
	  
	 @Test
	 public void dateFormatDemo(){
		 
		//把Date与字符串之间的转换
			
			//把Date对象-->字符串   ----格式化
			//DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss SSS");
			DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
			Date d = new Date();
			String str = df.format(d);//格式化
			System.out.println(str);
			
			//把字符串-->Date对象    -----解析
			String ss = "3.25.2018 19:57";
			SimpleDateFormat sdf = new SimpleDateFormat("MM.dd.yyyy HH:mm");
			try {
				Date dd = sdf.parse(ss);//解析
				String s2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分").format(dd);
				System.out.println(s2);
			} catch (ParseException e) {
				e.printStackTrace();
			}
	 }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值