• 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);
    	
    }
    }
    

      

  • 相关阅读:
    谦谦君子 温润如玉
    [Linux: vim]vim自动生成html代码
    /boot/grub/grub.conf 内容诠释
    mini_httpd在RedHat 5下安装
    html 简单学习
    v4l
    手机处理器哪个好 智能手机处理器进化知识
    小败局】一位草根北漂创业者自述:赚钱的快餐店之死
    读书
    手游研发CJ抱大腿指南
  • 原文地址:https://www.cnblogs.com/chenzhiwei/p/9515921.html
Copyright © 2020-2023  润新知