智能化校园:深入探讨云端管理系统设计与实现(一)
智能化校园:深入探讨云端管理系统设计与实现(二)
java.util 包提供了 Date 类来封装当前的日期和时间。
import.util.Date
java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点。
固定时间点叫纪元,是UTC时间 1970年1月1日 00:00:00。
Date的每一个实例表示一个确切的时间点。记录从1970年1月1日 00:00:00到表示时间点之间经历的毫秒值。正数是70年以后日期,负数是70年以前日期。
//获取现在时间
Date now=new Date();
System.out.println(now);
//获取long值
long time=now.getTime();
System.out.println(time);
//明天此时的值
time+=1000*60*60*24;
//设置了一个long值,使它表示我们设置的值
now.setTime(time);
System.out.println(now);
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
//根据给定的日期格式将String与Date相互转换
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//format() 方法可以将给定的date对象所表示的时间按照给定的日期格式转化成字符串
String str= sdf.format(now);
System.out.println(str);
//Date parse()方法将给定字符串按照给定的日期格式解析为一个date对象
String str1="2020-11-11 11:11:11";
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=sdf1.parse(str1);
System.out.println(date);
日期模式匹配符
10000天纪念日计算小方法
10000天纪念日
/**
* 输入生日 yyyy-MM-dd
* 到现在为止一共多少天
*/
System.out.println("输入生日,年月日");
Scanner scanner=new Scanner(System.in);
String str2=scanner.nextLine();
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
Date birth=sdf2.parse(str2);
//已经生活了多少天
Date now2=new Date();
System.out.println(now2);
SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf3.format(now2));
long time1=now2.getTime()-birth.getTime();
time1=time1/1000/60/60/24;
System.out.println(time1);
//如果生活了10000天的话,那一10000天是哪一天,若还没有达到10000天,那么哪一天到达10000天
if(time1>=10000){
long time2=time1-10000;
time2=time2*1000*60*60*24;
now2.setTime(now2.getTime()-time2);
System.out.println(sdf2.format(now2));
}else{
long time3=10000-time1;
time3=time3*1000*60*60*24;
now2.setTime(now2.getTime()+time3);
System.out.println(sdf2.format(now2));
}
Calendar,日历类
该类是一个抽象类,封装了对时间的相关操作
常用的实现是格力高里历(阳历)GregorianCalendar类
Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。
//创建一个代表系统当前日期的Calendar对象
Calendar c = Calendar.getInstance();//默认是当前日期
//创建一个指定日期的Calendar对象
//使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。
//创建一个代表2022年2月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2022, 2 - 1, 12);
//使用静态方法创建实例
//该方法根据系统所在地区创建一个相应实现类
Calendar c=Calendar.getInstance();
System.out.println(c);//无法直观表示时间
// Calendar 提供了方法getTime()返回一个date对象,该对象表示时间就是当前Calendar表示的时间
Date date=c.getTime();
System.out.println(date);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(date));
//表示明天这一时刻
date.setTime(date.getTime()+1000*60*60*24);
System.out.println(date);
Calender的月份是从0开始的,但日期和年份是从1开始的
//Calendar 提供针对不同时间分量单独设置值的方法
void set(int filed,int value);
//第一个参数为时间值:时间分量 如 年月日,第二个 对应的值
c.set(Calendar.YEAR,2021);
获取时间
获取时间
int get(int filed)
Calendar c2=Calendar.getInstance();
int year=c2.get(Calendar.YEAR);
int month=c2.get(Calendar.MONTH)+1;
int day=c2.get(Calendar.DATE);
int hour=c2.get(Calendar.HOUR);
int min=c2.get(Calendar.MINUTE);
int s=c2.get(Calendar.SECOND);
查看星期几
int dow=c2.get(Calendar.DAY_OF_WEEK);
System.out.println("周"+(dow==1?"7":dow-1));
String[] data={"日","一","二","三","四","五","六"};
System.out.println("周"+data[dow-1]);
查看今年过了多少天
int day1=c2.get(Calendar.DAY_OF_YEAR);
System.out.println(year+"已经过"+day1+"天");
getActuakMaximum方法
返回指定日历字段可能拥有的最大值
int day2=c2.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(day2);
//2月天数,闰年
c2.set(Calendar.MONTH,1);
day2=c2.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(day2);
Calendar中计算时间的方法
c2.add(Calendar.YEAR,3);
System.out.println(c2.getTime());
c2.add(Calendar.HOUR,-5);
System.out.println(c2.getTime());