常用的时间类
java.util.Date
java.text.SimpleDateFormat
java.util.Calendar
Date
java.util.Date
java.sql.Date jdbc
java.util.Date() 得到当前系统的日期
long getTime()得到指定日期的毫秒值
System.currentTimeMillis();//得到当前时间的毫秒值 返回值 long
Date date = new Date(); long time = date.getTime();//Data获取1970年1月1日 8点0分0秒到现在的毫秒数 System.out.println(time);//1660131119655 long l = System.currentTimeMillis(); System.out.println(l);//1660131119656
SimpleDateFormat
是DateFormat(抽象类)的直接子类。
提供字符串到日期,日期到字符串的转换。
SimpleDateFormat(pattern日期格式)
注意:MM 表示月份,mm表示分钟。
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss")
日期转换为String
public final String format(Date date)
String转换为日期 (需要异常处理)
public Date parse(String str);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //1、日期转字符串 Date date3 = Calendar.getInstance().getTime(); String dateStringParse = sdf.format(date3); String dateStringParse2 = sdf2.format(date3); System.out.println(dateStringParse);//2022-08-10 19:42:20 System.out.println(dateStringParse2);//2022年08月10日 19时42分20秒 //2、字符串转日期 try { String dateString = "2000-11-28 14:02:08"; Date dateParse = sdf.parse(dateString); System.out.println(dateParse);//Tue Nov 28 14:02:08 CST 2000 } catch (ParseException e) { e.printStackTrace(); }
Calendar
日历类 java.util.Date
抽象类 public abstract class Calendar
获取系统时间,提取日期中年、月、日,输出为int型
创建Calendar对象
调用Calendar类的静态方法
static Calendar getInstance()
得到当前系统日期的对象Calendar c3 = new GregorianCalendar(1911,11,25);
获取日历的某个字段
Calendar cal =Calendar.getInstance(); int year = cal.get(Calendar.YEAR);//获取年份 int month=cal.get(Calendar.MONTH);//获取月份 int day=cal.get(Calendar.DATE);//获取日 int hour=cal.get(Calendar.HOUR_OF_DAY);//小时 int minute=cal.get(Calendar.MINUTE);//分 int second=cal.get(Calendar.SECOND);//秒 int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK);//一周的第几天 System.out.println("现在的时间是:公元"+year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒,星期"+WeekOfYear); // 现在的时间是:公元2022年7月10日19时46分43秒,星期4
注意!! 月份从0开始 0-11 星期从星期天到星期六
设置日历的某个字段: set(int 字段名, 值)
把Calendar转换成Date —— Calendar类的getTime()
把Date 转换成Calendar—— Calendar类的setTime()
对日期的加减操作 c2.add(Calendar.YEAR,1); //加一年
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date=null; try { date=sdf.parse("2022-08-10 20:19:19"); } catch (ParseException e) { e.printStackTrace(); } Calendar cal =Calendar.getInstance(); cal.setTime(date); int hour=cal.get(Calendar.HOUR_OF_DAY);//小时 System.out.println(hour+"点"); //结果:20点
使用时间类示例
根据出生日期计算年龄
package Example;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TestData {
// 1.把出生日期字符串转换为日期格式。
public static Date parse(String strDate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(strDate);
}
// 2.计算年龄
public static int getAge(Date birthDay) throws Exception {
Calendar cal = Calendar.getInstance();
if (cal.before(birthDay)) { //出生日期晚于当前时间,无法计算
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!");
}
int yearNow = cal.get(Calendar.YEAR); //当前年份
int monthNow = cal.get(Calendar.MONTH); //当前月份
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); //当前日期
cal.setTime(birthDay);
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH);
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth; //计算整岁数
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
if (dayOfMonthNow < dayOfMonthBirth) age--;//当前日期在生日之前,年龄减一
}else{
age--;//当前月份在生日之前,年龄减一
}
} return age; }
//3.执行方法
public static void main(String[] args) {
try {
int age = getAge(parse("1990-09-27")); //由出生日期获得年龄***
System.out.println("age:"+age);//age:31
} catch (Exception e) {
e.printStackTrace();
}
}
}