Date


data-数据  date-时间

Date
* -Date的每一个实例用于表现一个确切的时间点
* -内部维护了一个long值,该值记录的是:
* 1970.01.01到现在的的时间毫秒数,正数是70年之后,负数是70年之前
* -因为Date在设计上有缺陷,所以他的大部分方法都被设置成“过时的”,不再建议使用

java.lang 不需要导入,可以直接使用
* java.util 工具类
* java.io 输入或者输出流
* java.sql 关于数据库操作
* java.text 文本格式

package day01;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * data-数据  date-时间
 * java.util.Date
 *  -Date的每一个实例用于表现一个确切的时间点
 *  -内部维护了一个long值,该值记录的是:
 *   1970.01.01到现在的的时间毫秒数,正数是70年之后,负数是70年之前
 *  -因为Date在设计上有缺陷,所以他的大部分方法都被设置成“过时的”,不再建议使用
 *  
 *  java.lang 不需要导入,可以直接使用
 *  java.util 工具类
 *  java.io   输入或者输出流
 *  java.sql  关于数据库操作
 *  java.text 文本格式
 *  
 * @author ajia
 * 
 *
 */
public class DateDemo {
public static void main(String[] args) {
	/*
	 * 使用默认构造方法创建的Date类达标当前时间
	 */
	Date now=new Date();
	/*
	 * Date重写了toString方法,其返回的字符串为当前时间
	 *  Wed Aug 22 09:36:12 CST 2018
	 */
	System.out.println(now);
	SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd");
	String str=date.format(now);
	System.out.println(str);
	
/*
* Date中过期的方法
*/
	now.getYear();//过时
	long time=now.getTime();//获取时间毫秒数
	System.out.println(time);
	
	
//计算明天这个时候的时间毫秒数
	time+=24*60*60*1000;
	System.out.println(time);//明天此时的毫秒数
	
	/*
	 * void setTime(long)
	 * - 设置一个long值,使date对象表现long值代表的时间值
	 */
	now.setTime(time);
	System.out.println(now);
	
	
	
	
	
	
}
}

  

java.text.SimpleDateFormat
 -根据一个给定的日期格式将Date与String转换

 

package day01;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * java.text.SimpleDateFormat
 *  -根据一个给定的日期格式将Date与String转换
 *  
 */
public class SimpleDateFormatDemo01 {
public static void main(String[] args) {
	 Date now=new Date();
	 System.out.println(now);
	 
	 /*
	  * SimpleDateFormat在创建时需传入一个时间格式
	  * y:年      H:小时
	  * M:月      m:分
	  * d:日     s:秒
	  */
	 
	 //format方法将时间按照上面给定的格式以字符串的格式输出
	 SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E a" );
	 String nowDate=date.format(now);
	 System.out.println(nowDate);
	 
	 
}
}

  课堂小练习:

显示当前系统时间16天5小时35分钟40秒之后的时间按
-格式:2018年8月25号 15:24:35

 

package day01;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * 显示当前系统时间16天5小时35分钟40秒之后的时间按 
 * -格式:2018年8月25号 15:24:35
 *      
 */
public class Work01 {
public static void main(String[] args) {
	Date now=new Date();
	now.setTime(now.getTime()+16*24*60*60*1000+5*60*60*1000+35*60*1000+40*1000);
	//date中的setTime方法传入的参数是long值,用于设置当前Date
	SimpleDateFormat date=new SimpleDateFormat("yyyy年MM月dd号 HH:mm:ss ");
	String time=date.format(now);
	System.out.println(time);
}
}

  

Date parse(String str)
* -将给定的字符串按照SimpleDateFormat指定的日期格式解析为一个Date对象

package day01;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 *  将String -》date
 *  Date parse(String str)
 *    -将给定的字符串按照SimpleDateFormat指定的日期格式解析为一个Date对象
 *  
 */
public class SimpleDateFormatDemo2 {
public static void main(String[] args) throws ParseException {
	String st="2008-08-08 20:08:08";
	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	Date date=sdf.parse(st);//需要抛异常
	System.out.println(date);
	 
	 
}
}

  课堂小练习:

package day01;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*要求用户输入一个自己的生日,格式为:1992-01-01
 * -计算输出:到现在活了多少天
 * -距离10000天还有多少天
 * -10000天的生日纪念日是几号
 *      
 */
public class Work2 {
public static void main(String[] args) throws ParseException {
	System.out.println("请输入你的出生日日期,例如:2000-01-01");
	Scanner scan=new Scanner(System.in);
	String str=scan.nextLine();
	SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
	Date date=sd.parse(str);//抛异常
	Date now=new Date();
	long nowTime=now.getTime();
	long birthTime=date.getTime();
	long liveTime=nowTime-birthTime;
	liveTime/=(24*60*60*1000);
	System.out.println("恭喜你到现在活了:"+liveTime+"天");
	
	//距离多少天1w天
	if(liveTime<=10000){
		System.out.println("距离10000天还有"+(10000-liveTime)+"天");
	}else{
		System.out.println("你已经超过1w天");
	}
	
	//计算1w天几年几日的毫秒数
	liveTime=(10000-liveTime)*24*60*60*1000;
	liveTime+=now.getTime();
	now.setTime(liveTime);
	System.out.println("你1w天的时间纪念日为"+sd.format(now));
	
}
}

  

java.util.Calendar
 -该类是一个抽象类,封装了对时间的相关操作
 -可以使用该类:计算时间

 

package day01;

import java.util.Calendar;
import java.util.Date;

/**
 * java.util.Calendar
 * -该类是一个抽象类,封装了对时间的相关操作
 * -可以使用该类:计算时间
 * 
 * @author ajia
 *
 */
public class CalenderDemo01 {
public static void main(String[] args) {
	 /*
	  *  -使用Calendar自带的静态方法创建实例。该方法会根据当前系统所在的地区
	  *  创建一个对应的实现,通常是GregorianCalendar(公历)
	  *  -默认表示当前系统时间
	  */
	Calendar calendar=Calendar.getInstance();
//	System.out.println(calendar);
	
	/*
	 * Calendar转化成Date
	 * Date getTime()
	 *  -返回一个Date对象,该对象表示的时间就是当前Calendar的时间
	 */
	Date date=calendar.getTime();
	System.out.println(date);
	
	//增加一天
	date.setTime(24*60*60*1000);
	date=calendar.getTime();
	System.out.println(date);
	
	/*
	 * void setTime(Date date)
	 * -setTime方法使calendar对象表示传入的Date时间对象的时间
	 */
	calendar.setTime(date);
	date=calendar.getTime();
	System.out.println(date );
	
}

}

 

  注:Date.getTime()获取的是时间的毫秒数,calendar.getTime()是将当前公历时间返回Date型

 Calendar不同时间分量设置的方法

calendar.set(int field,int value)

 

package day01;

import java.util.Calendar;
import java.util.Date;
/*
 * Calendar提供了针对不同时间分量都设置的方法
 * void set(int field,int value)
 *    -第一个参数为时间分量:年月日...时间分量是一个int值,通常由Calendar提供
 *    -第二个参数为对应的值
 */
public class CalenderDemo2 {
public static void main(String[] args) {
	
	Calendar calendar=Calendar.getInstance();
	/*
	 * 设置2008-08-08
	 */
    //设置年
	calendar.set(Calendar.YEAR, 2008);
	//设置月从0开始,故设置成7月
	calendar.set(Calendar.MONTH,7);
	//也可以使用Calendar中月的常量
	//calendar.set(Calendar.MONTH, Calendar.AUGUST);
	
    //设置日
	/*
	 * Date          月中天
	 * Day_OF_MONTH  月中天
	 * Day_OF_WEEK   周中天
	 * Day_OF_YEARK  年中天
	 * 
	 */
	calendar.set(Calendar.DAY_OF_MONTH,8);
	System.out.println(calendar.getTime());
	
	/*
	 * HOUR_OF_DAY:24h制
	 * HOUR:12h制
	 */
	
	calendar.set(Calendar.HOUR_OF_DAY, 20);//设置时
	calendar.set(Calendar.MINUTE, 8);//设置分
	calendar.set(Calendar.SECOND, 8);//设置秒
	System.out.println(calendar.getTime());
}

}

Calendar对不同时间分量的获取

int get (int  field)
package day01;

import java.util.Calendar;

/**
 * 获取Calendar中时间分量对应的值
 *  int get (int  field)
 *  传入一个想获取的时间分量
 * @author ajia
 *
 */
public class CalendarDemo03 {
	
	public static void main(String[] args) {
		Calendar calendar=Calendar.getInstance();
		int year=calendar.get(Calendar.YEAR);//获取年
		int month=calendar.get(Calendar.MONTH);//获取月
		int day=calendar.get(Calendar.DAY_OF_MONTH);//获取号
		int h=calendar.get(Calendar.HOUR_OF_DAY);//获取小时
		int m=calendar.get(Calendar.MINUTE);//获取分
		int s=calendar.get(Calendar.SECOND);//获取秒
		
		System.out.println(year+"年"+month+"月"+day+"日"+" "+h+":"+m+":"+s);
		//获取今天是星期几
		int day1=calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println(day1);
		
		//今天是今年的第几天
		int day2=calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println(day2);
		
	}
	
	

}

  

  

Calendar中计算时间的方法
calendar add(int field,int value)

package day01;

import java.util.Calendar;

/**
 * Calendar中计算时间的方法
 *  -calendar add(int field,int value)
 *  -对指定时间分量加上给定的值。如果给定的是负数,则是减去时间
 * @author ajia
 *
 */
public class CalendarDemo05 {
public static void main(String[] args) {
	/*
	 * 查看三年两个月零八天后时间
	 */
	Calendar calendar=Calendar.getInstance();
	calendar.add(Calendar.YEAR, 3);
	calendar.add(Calendar.MONTH, 2);
	calendar.add(Calendar.DAY_OF_YEAR, 8);
	System.out.println(calendar.getTime());
	
	
	
}
}

  课堂小练习:

 

package day03;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 输入一个生产日期格式"yyyy-MM-dd",再输入一个数字(保质期的天数)。
 * 然后经过计算输出促销日期,促销日期为:该商品过期日前2周的周三
 * @author Xiloer
 *
 */
public class Test04 {
public static void main(String[] args) throws ParseException {
	System.out.println("请输入生产日期,格式如:2000-01-01");
	Scanner scan=new Scanner(System.in);
	String birthDay=scan.nextLine();
	System.out.println("请输入保质期,例如:80");
	int freshDay=scan.nextInt();
	
	//
	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
	 Date date=sdf.parse(birthDay);//将字符串转换成Date
	 
	 Calendar calendar=Calendar.getInstance();
	 calendar.setTime(date);//将用户输入的日期换成calendar进行计算
	 
	 
	 calendar.add(Calendar.DAY_OF_YEAR, freshDay);//计算保质期的时间
	 calendar.add(Calendar.DAY_OF_YEAR, -14);//减去两礼拜前
	 
	 calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);;//获取俩礼拜前的周三
	 Date date1=calendar.getTime();
	 String str=sdf.format(date1);
	 System.out.println(str);
	
}
}

 

  

 

posted @ 2018-08-22 09:52  那年丶青春无痕  阅读(429)  评论(0编辑  收藏  举报