日期和时间
时间戳
1.时间戳是一个Long类型的整数
2.格林尼治时间(GST)又称为世界标准时间,从1970年1月1日00:00到当前这一刻的毫秒数
中央标准时间(CST),比GST晚8个小时
Date 日期类
SimpleDateFormat 日期格式转换类
构造方法的参数String pattern代表日期格式,可以这样写
格式符号 | 日期单位 |
yyyy | 年 |
MM | 月 |
dd | 日 |
HH | 时(24小时计时) |
hh | 时(12小时计时) |
mm | 分 |
ss | 秒 |
"yyyy-MM-dd HH:mm:ss"
编写图书管理系统实现代码。里面有涉及日期和时间的程序
图书管理系统
图书类Book
属性
书名 name
作者 author
出版社 publisher
定价 price
租借人 leaser
出租日期 rentDate
日租金 rent
租借天数 day
状态 state
不提供带参构造方法
提供成员方法show
提供getter/setter方法
测试类Demo
静态变量
控制台扫描器
图书数组 bookArray, 长度为5
静态代码块 static{} 初始化3个Book对象, 一个未逾期的一个已逾期的, 一个7日内逾期的, 一个未逾期的
存储到bookArray数组中用于测试
主函数 - do-while 打印菜单, 并让用户选择
1. 查看图书列表 display()
2. 添加图书 addBook()
3. 删除图书 deleteBook()
4. 租借 rentOut()
5. 归还 giveBack()
6. 续租 relet()
要求: 用户输入续租的天数, 然后更新对象中的天数
测试的时候, 可以对一个已经过期的图书进行续租, 续租成功后, 再次查看已逾期时, 就不会出现了
7. 查看7日内即将到期的 expireIn7Days()
要求: 找出7日内即将到期的图书, 并打印出剩余天数
8. 查看已逾期的 overdue()
要求: 找出已经逾期的图书, 并打印出逾期天数
9. 退出
编写相应的静态函数实现上述功能
package Chapter10时间和日期;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
//SDF是一个SimpleDateFormat类型的指针,是一个静态常量
public static final SimpleDateFormat SDF=
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static String date2String(Date date){
return SDF.format(date);
}
public static Date string2Date(String dateStr){
//如果转换成功,转换的是
try {
return SDF.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
}
package Chapter11图书管理系统;
public class Book {
//书名
private String name;
//作者
private String author;
//出版社
private String publisher;
//定价
private Double price;
//租借人
private String leaser;
//出租日期
private String rentDate;
//日租金
private Double rent;
//租借天数
private Integer day;
//状态
private Integer state;
public void show(){
System.out.println("书名:"+this.name);
System.out.println("作者:"+this.author);
System.out.println("出版社:"+this.publisher);
System.out.println("定价:"+this.price);
System.out.println("租借人:"+this.leaser);
System.out.println("出租日期:"+this.rentDate);
System.out.println("日租金:"+this.rent);
System.out.println("租借天数:"+this.day);
System.out.println("状态:"+(this.state==0?"未出租":"已出租"));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getLeaser() {
return leaser;
}
public void setLeaser(String leaser) {
this.leaser = leaser;
}
public String getRentDate() {
return rentDate;
}
public void setRentDate(String rentDate) {
this.rentDate = rentDate;
}
public Double getRent() {
return rent;
}
public void setRent(Double rent) {
this.rent = rent;
}
public Integer getDay() {
return day;
}
public void setDay(Integer day) {
this.day = day;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
}
package Chapter11图书管理系统;
import Chapter10时间和日期.DateUtil;
import java.util.Date;
import java.util.Scanner;
public class Demo {
static Scanner sc=new Scanner(System.in);
static Book[] bookArray=new Book[5];
static {
Book book1=new Book();
book1.setName("活着");
book1.setAuthor("余华");
book1.setPublisher("北京图书");
book1.setPrice(30.00);
book1.setLeaser("杨俊");
book1.setRentDate("2022-06-23 07:00:00");
book1.setRent(1.0);
book1.setDay(30);
book1.setState(1);
bookArray[0]=book1;
Book book2=new Book();
book2.setName("斗罗大陆");
book2.setAuthor("唐三");
book2.setPublisher("上海图书");
book2.setPrice(40.00);
book2.setLeaser("高雄");
book2.setRentDate("2022-05-30 07:00:00");
book2.setRent(2.0);
book2.setDay(27);
book2.setState(1);
bookArray[1]=book2;
Book book3=new Book();
book3.setName("白皮书");
book3.setAuthor("老师");
book3.setPublisher("java出版社");
book3.setPrice(20.00);
book3.setLeaser("高");
book3.setRentDate("2022-06-07 07:00:00");
book3.setRent(3.0);
book3.setDay(30);
book3.setState(1);
bookArray[2]=book3;
}
public static void main(String[] args) {
int choice=0;
do {
System.out.println("欢迎进入图书租借系统");
System.out.println("1.查看图书列表");
System.out.println("2.添加图书");
System.out.println("3.删除图书");
System.out.println("4.租借");
System.out.println("5.归还");
System.out.println("6.续租");
System.out.println("7.查看7日即将到期的");
System.out.println("8.查看逾期的");
System.out.println("9.退出");
System.out.println("10.请选择");
choice=sc.nextInt();
switch(choice){
case 1:
display();
break;
case 2:
addBook();
break;
case 3:
deleteBook();
break;
case 4:
rentOut();
break;
case 5:
giveBack();
break;
case 6:
relet();
break;
case 7:
expireln7Days();
break;
case 8:
overdue();
break;
case 9:
break;
}
} while (choice!=9);
}
private static void overdue() {
for (int i = 0; i < bookArray.length; i++) {
if (bookArray[i]==null){
break;
}
if (bookArray[i].getState()==0){
continue;
}
Book book=bookArray[i];
long now=new Date().getTime();
long rentTime= DateUtil.string2Date(book.getRentDate()).getTime();
int rentDay=(int)((now-rentTime)/1000/60/60/24);
if(rentDay>book.getDay()){
System.out.println(book.getName()+"已逾期");
System.out.println("租借人:"+book.getLeaser());
System.out.println("逾期天数:"+(rentDay-book.getDay()));;
}
}
}
private static void expireln7Days() {
for (int i = 0; i < bookArray.length; i++) {
if (bookArray[i]==null){
break;
}
if (bookArray[i].getState()==0){
continue;
}
Book book=bookArray[i];
long now=new Date().getTime();
long rentTime= DateUtil.string2Date(book.getRentDate()).getTime();
int exp=(int)((now-rentTime)/1000/60/60/24);
int a=book.getDay()-exp;
if(a<=7&&a>0){
System.out.println("租借人:"+book.getLeaser());
System.out.println("书名:"+book.getName());
System.out.println("剩余天数:"+a);
}
}
}
private static void relet() {
System.out.println("欢迎进入图书续租业务");
display();
System.out.println("请输入续租图书编号");
int index=sc.nextInt()-1;
Book book=bookArray[index];
System.out.println("请输入续租天数");
book.setDay(sc.nextInt()+ book.getDay());
System.out.println("续租成功");
}
private static void giveBack() {
System.out.println("欢迎进入图书归还业务");
display();
System.out.println("请输入归还图书编号");
int index=sc.nextInt()-1;
Book book=bookArray[index];
if(book==null){
System.out.println("该图书不存在,请重新选择");
}else if (book.getState()==0){
System.out.println("该图书未出租,无需归还");
}else {
double pay=book.getRent()*book.getDay();
System.out.println("你需要支付租金:"+pay+"元");
book.setLeaser(null);
book.setRent(null);
book.setDay(null);
book.setState(0);
System.out.println("归还成功");
}
}
private static void rentOut() {
System.out.println("欢迎进入图书租借系统");
display();
System.out.println("请选择租借的图书编号:");
int index=sc.nextInt()-1;
Book book=bookArray[index];
if(book==null){
System.out.println("该书不存在,请重新选择");
}else if(book.getState()!=0) {
System.out.println("该书已经出租,请重新选择");
}else {
System.out.println("请输出租借人:");
book.setName(sc.next());
System.out.println("请输入日租金");
book.setRent(sc.nextDouble());
System.out.println("请输入租借天数");
book.setDay(sc.nextInt());
System.out.println(book.getName()+"租借成功");
book.setState(1);
}
}
private static void deleteBook() {
System.out.println("欢迎进入图书删除业务");
display();
System.out.println("请输入需要删除的图书编号:");
int index=sc.nextInt()-1;
if(bookArray[index]!=null){
bookArray[index]=null;
System.out.println("删除成功");
}else {
System.out.println("没有该图书,删除失败");
}
}
private static void addBook() {
System.out.println("欢迎进入添加图书业务");
Book book=new Book();
System.out.println("请输入图书名称");
book.setName(sc.next());
System.out.println("请输入图书作者");
book.setAuthor(sc.next());
System.out.println("请输入图书出版社");
book.setPublisher(sc.next());
System.out.println("请输入图书定价");
book.setPrice(sc.nextDouble());
System.out.println("请输入图书状态");
book.setState(sc.nextInt());
for (int i = 0; i < bookArray.length; i++) {
if(bookArray[i]==null){
bookArray[i]=book;
System.out.println(book.getName()+"添加成功");
break;
}
}
}
private static void display() {
System.out.println("进入图书展示");
for (int i = 0; i < bookArray.length; i++) {
System.out.println((i+1)+"号图书");
if(bookArray[i]==null){
System.out.println("空");
}else {
bookArray[i].show();
}
}
}
}