Date类
- java.util.Date
- Date的每一个实例用于表示一个确切的时间点,内部维护了一个long值,该值保存的是自1970年1月1日00:00:00
- 到当前Date所表示时间之间经过的毫秒数。由于Date自身设计问题(主要是时区问题),所以Date大部分的操作时间的
- 方法都被声明为过时方法,实际开发中已经不再建议使用了
- Date类的构造方法
- Date() 无参构造
- Date(long time) 有长整型参数的构造方法
- 其他构造方法已经废弃不用
- Date类常用方法
- long getTime();返回自1970年1月1日00:00:00以来此对象表示的毫秒数
- setTime(long time);设置该对象的毫秒数
- String toString();将Date对象转换为字符串
package SE01.n6Util;
import java.util.Date;
public class Demo01Date {
public static void main(String[] args) {
Date date =new Date();
System.out.println(date);
date.getYear();
System.out.println(date.getMinutes());
long time=date.getTime();
System.out.println(time);//获取毫秒数,内部维护的long值
time+=1000*60*60*24;//将毫秒数往后推一天
date.setTime(time);//将推后一天的毫秒数设置回Date对象
System.out.println(date);
Date date2=new Date(time);//第二种构造方法
System.out.println(date2);
}
}
Calendar类
- java.util.Calendar
- 日历类,是一个抽象类,定义了操作日期的相关方法
- 常用实现类:java.util.GregorianCalender,即:阳历
- Calendar常用方法:
1.static Calendar getInstance();该方法可以获取一个当前系统所在地区使用的实现类对象,大部分地区返回的都是阳历
2.Date getTime();返回代表该日历对象的Date值
3.void setTime(Date date);使用指定的Date设置该日历对象
4.get(int field);获取某个日历字段的值
5.void set(int field,int x);设置日历字段的值 - 常用的日历字段:
- AM_PM 上午或下午
- YEAR 年
- MONTH_OF_YEAR 月
- DATE 日
- HOUR 12小时制
- HOUR_OF_DAY 24小时制
- MINUTE 分钟
- SECOND 秒
- MILLISECOND 毫秒
package SE01.n7Canlendar;
import java.util.Calendar;
import java.util.Date;
public class Demo01Calendar {
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();
System.out.println(calendar);
Date date =calendar.getTime();//获取calendar对象中的Date实例
System.out.println(date);
long time=date.getTime();//获取毫秒数
time+=1000*60*60*24;
date.setTime(time);
calendar.setTime(date);
System.out.println(calendar);
}
}
Calender的get方法
/*
- Calendar提供了一个方法:
- get(int field);获取某个日历字段的值
- 该方法可以获取当前Calendar所表示的日期中给定的时间分量所对应的值
- 不同的int值表示不同的时间分量。
- 而Calendar提供了大量的静态常量用于说明这些时间分量
*/
package SE01.n7Canlendar;
import java.util.Calendar;
public class Demo02Get {
public static void main(String[] args) {
Calendar calenda = Calendar.getInstance();
int year=calenda.get(Calendar.YEAR);
System.out.println(year);
int month=calenda.get(Calendar.MONTH)+1;
System.out.println(month);
int day=calenda.get(Calendar.DAY_OF_MONTH);//日
System.out.println(day);
int week=calenda.get(Calendar.WEEK_OF_MONTH);
System.out.println(week);
int h=calenda.get(Calendar.HOUR_OF_DAY);
System.out.println(h);
int m=calenda.get(Calendar.MINUTE);
System.out.println(m);
int s=calenda.get(Calendar.SECOND);
System.out.println(s);
int apmp=calenda.get(Calendar.AM_PM);
String t="";
if(apmp>0) {
t="下午";
}else {
t="上午";
}
System.out.println(year+"年"+month+"月"+day+"日"+t+h+":"+m+":"+s);
}
}
Calendar的set方法和add方法
/*
- void set(int field,int x);设置日历字段的值
- 设置当前Calendar指定时间分量所对应的值
- void add(int field,int amount)
- 对指定时间分量累加给定值,若amount是负数则减去
*/
package SE01.n7Canlendar;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Demo03Others {
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR, 2000);
c.set(Calendar.MONTH,Calendar.AUGUST);//设置月
c.set(Calendar.DATE, 8);//日
System.out.println(c.getTime());//Tue Aug 08 16:50:47 CST 2000
c.add(Calendar.YEAR, 30);
System.out.println(c.getTime());//Thu Aug 08 16:50:47 CST 2030
GregorianCalendar g=new GregorianCalendar();
g.isLeapYear(2020);//f
}
}
DateFormat类
/*
- DateFormat是一个抽象的时间格式化类
- DateFormat以与语言无关的方式格式化(Date变字符串)并解析(字符串Date)日期或时间,
- DateFormat可帮助进行格式化并解析任何语言环境的日期。对于月,星期,甚至日历格式
- (阴历和阳历),其代码可完全与语言环境的约定无关。在格式化和解析日期时间的过程中,
- 其子类SimpleDateFormat更为常用
- SimpleDateFormat类
- 构造方法
- simpleDateFormat()
- simpleDateFormat(String pattern)按照指定的模式创建SimpleDateFormat对象
*/
package SE01.n8dateFomat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo01DateFormat {
public static void main(String[] args) {
// 1.格式化:Date变String
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:ss E a");
String line=sdf.format(date);
System.out.println(line);//2020-06-30 21:37 周二 下午
// 2.解析:String变Date
String str="1999-06-03 16:06:00";
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date2=new Date();
try {
date2=sdf2.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date2);//Thu Jun 03 16:06:00 CST 1999
}
}