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