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