需要引入类包java.util.Date*
-
用构造方法得到当前时间
Date d = new Date(); -
用构造方法将long类型的时间值转成日期
Date dd = new Date(time); -
得到当前时间的毫秒值
Long System.currentTimeMillis() -
把Date类型转为long类型
long getTime()
Date d = new Date();//重写了toString方法,得到的是当前时间
System.out.println(d);//Sat Aug 07 18:19:05 CST 2021
long time = System.currentTimeMillis();//从1970.1.1 0点到现在的毫秒数
//把long类型的时间值转成Date类型
Date dd = new Date(time);
System.out.println(dd);
//把Date类型转为long类型
long shijian =dd.getTime();
System.out.println(shijian);
指定格式
需要引入类包java.text.SimpleDateFormat
- 使用默认模式和日期格式符号
SimpleDateFormat sdf=new SimpleDateFormat(); - 使用给定模式,并使用默认的语言环境默认的日期格式符号
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd E HH:mm:ss”);
转换为指定格式
-
把Date类型的日期转成字符串类型的日期
String format(Date date) -
把字符串类型的日期转成Date类型的日期
Date parse(String source) throws ParseException
需要声明异常ParseException
import java.text.*;
import java.util.*;
class Demo3{
public static void main(String[] args)throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");
Date date = new Date();
//把Date类型的日期转成字符串类型的日期String format(Date date)
String riqi = sdf.format(date);
System.out.println(riqi);//2021-08-08 星期日 16:29:56
//把字符串类型的日期转成Date类型的日期Date parse(String source)
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy/MM/dd");
Date shijian = sdf2.parse("2021/08/06");
System.out.println(shijian);//Fri Aug 06 00:00:00 CST 2021
}
}
日历类
java.util.Calendar
-
静态方法 使用默认时区和区域设置获取日历
static Calendar getInstance()
Calendar rili =Calendar.getInstance();
System.out.println(rili);
运行结果:
java.util.GregorianCalendar[time=1628412854092,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=7,WEEK_OF_YEAR=33,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=220,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=54,SECOND=14,MILLISECOND=92,ZONE_OFFSET=28800000,DST_OFFSET=0]
属性
- 月份从0开始
- 星期以周日为第一天,从0开始
int nian = rili.get(Calendar.YEAR);
int yue=rili.get(Calendar.MONTH); //1月对应的数值是0
int ri=rili.get(Calendar.DAY_OF_MONTH);
int week=rili.get(Calendar.DAY_OF_WEEK); //星期日对应的数值是1
System.out.println(nian+"年"+(yue+1)+"月"+ri+"日"+"星期"+((week>1)?(week-1):7));
练习
-
计算两个日期相差的天数
public static int getDays(String from,String to) throws ParseException{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date froms=sdf.parse(from); Date tos=sdf.parse(to); long shijian = tos.getTime()-froms.getTime(); return (int)(shijian/1000/60/60/24); }
-
计算出生天数
public static int getDays(String birthday) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date shengri = sdf.parse(birthday); long shijian = new Date().getTime()-shengri.getTime(); return (int)(shijian/1000/60/60/24); }