Java中与日期时间相关的类(JDK8之前)
- java.lang.System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
- currentTimeMillis()适合于计算时间差
package www.bh.c.datetest;
public class Test01 {
public static void main(String[] args) {
long time = System.currentTimeMillis();
//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
//称为时间戳
System.out.println(time);//1605080421376
}
}
- java.util.Date类
- 表示待定的瞬间,精确到毫秒
- 构造器
- Date():使用无参构造器创建的对象可以获取本地当前时间
- Date(long date)
- 常用方法
- getTime():返回自1970年1月1日0时0分0秒GMT以来此Date对象表示的毫秒值
- toString():把此Date对象转换为以下形式的String:dow mon dd hh:mm:ss zzz yyyy 其中:dow是一周中的某一天(Sun,Mon,Tue,Wed,Thu,Fri,Sat),zzz是时间标准
package www.bh.c.datetest;
import java.util.Date;
public class Test01 {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.toString());//Wed Nov 11 15:57:45 CST 2020
System.out.println(date.getTime());//1605081465502
Date date1 = new Date(1605081359007L);
System.out.println(date1.toString());//Wed Nov 11 15:55:59 CST 2020
}
}
-
总结:两个构造器:1.Date():创建一个对应当前时间的Date对象
2.创建指定毫秒数的Date对象
两个方法:1.toString():显示当前的年月日时分秒
2.getTime():获取当前Date()对象对应的毫秒数(时间戳)
-
java.sql.Date对应着数据库中的日期类型的变量
- 实例化
package www.bh.c.datetest; import java.sql.Date; public class Test02 { public static void main(String[] args) { Date date = new Date(1605081465502L); System.out.println(date);//2020-11-11 } }
- 将java.util.Date对象转换为java.sql.Date对象
package www.bh.c.datetest;
import java.util.Date;
public class Test02 {
public static void main(String[] args) {
//情况1
Date date1=new java.sql.Date(1605081465502L);
java.sql.Date date2=(java.sql.Date) date1;
System.out.println(date2);//2020-11-11
//情况2
Date date3 = new Date();
java.sql.Date date4=new java.sql.Date(date3.getTime());
System.out.println(date4);//2020-11-11
}
}
-
java.text.SimpleDateFormat类
-
格式化:日期—>文本,解析:文本—>日期
-
格式化:
-
SimpleDateFormat():默认的模式和语言环境创建对象
-
public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象
-
public String format(Date date):方法格式化时间对象date
-
-
解析:
- public Date parse(String source):从给定字符串的开始解析文本,以生产一个日期
-
package www.bh.c.datetest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test03 {
public static void main(String[] args) throws ParseException {
//实例化SimpleDateFormat:使用默认的构造器
SimpleDateFormat sdf = new SimpleDateFormat();
//格式化:日期--->字符串
Date date = new Date();
System.out.println(date);//Wed Nov 11 17:25:36 CST 2020
String s=sdf.format(date);//2020/11/11 下午5:22
System.out.println(s);
//解析:格式化的逆过程,字符串--->日期
String s1="2020/11/11 下午5:22";
Date date1=sdf.parse(s1);
System.out.println(s1);//2020/11/11 下午5:22
}
}
- 按指定的方式格式化和解析:调用带参的构造器
package www.bh.c.datetest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test04 {
public static void main(String[] args) throws ParseException {
//实例化Date
Date date = new Date();
//调用带参的构造器实例化SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//格式化
String format = sdf.format(date);
System.out.println(format);//2020-11-11 06:24:53
//解析:要求字符串必须是符合SimpleDateFormat识别的格式(构造器参数),不然就会抛异常
Date parse = sdf.parse("2020-11-11 06:12:55");
System.out.println(parse);//Wed Nov 11 06:12:55 CST 2020
}
}
- 练习:字符串“2020-09-08”转换为java.sql.Date
package www.bh.c.datetest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test05 {
public static void main(String[] args) throws ParseException {
String str="2020-11-11";
//调用带参的构造器实例化SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//解析:字符串必须符合SimpleDateFormat识别的格式(构造器参数)
Date date = sdf.parse(str);
//转换为java.sql.Date
java.sql.Date date1 = new java.sql.Date(date.getTime());
System.out.println(date1);
}
}
-
java.util.Calendar类
-
Calendar是一个抽象基类主要用于完成日期字段之间相互操作的功能
-
获取Calendar实例的方法
- 使用Calendar.getlnstance()方法
package www.bh.c.datetest; import java.util.Calendar; public class Test06 { public static void main(String[] args) { Calendar instance = Calendar.getInstance(); System.out.println(instance); } }
- 调用它的子类GregorianCalendar的对象
package www.bh.c.datetest; import java.util.Calendar; import java.util.GregorianCalendar; public class Test06 { public static void main(String[] args) { GregorianCalendar gc = new GregorianCalendar(); System.out.println(gc); } }
- 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息,比如YEAR、MONTH
- public void set(int field,int value)
- public void add(int field,int amount)
- public final Date getTime()
- public final void setTime(Date date)
- 注意:
- 获取月份时:一月是0…十二月是11
- 获取星期时:周日是1…周六是7
- 常用方法:
-
package www.bh.c.datetest;
import java.util.Calendar;
public class Test06 {
public static void main(String[] args) {
//实例化(使用Calendar.getlnstance()方法)
Calendar instance = Calendar.getInstance();
System.out.println(instance);
//get()
int i = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(i);//12(12号)
int i1 = instance.get(Calendar.DAY_OF_WEEK);
System.out.println(i1);//5(周四)
}
}
package www.bh.c.datetest;
import java.util.Calendar;
public class Test06 {
public static void main(String[] args) {
Calendar instance = Calendar.getInstance();
System.out.println(instance);
int i = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(i);
int i1 = instance.get(Calendar.DAY_OF_WEEK);
System.out.println(i1);
System.out.println("=================");
//set()
instance.set(Calendar.DAY_OF_MONTH,2);
i=instance.get(Calendar.DAY_OF_MONTH);
System.out.println(i);//2
}
}
package www.bh.c.datetest;
import java.util.Calendar;
public class Test06 {
public static void main(String[] args) {
//实例化(使用Calendar.getlnstance()方法)
Calendar instance = Calendar.getInstance();
System.out.println(instance);
//get()
int i = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(i);//12
System.out.println("=================");
//add()
instance.add(Calendar.DAY_OF_MONTH,3);
i=instance.get(Calendar.DAY_OF_MONTH);
System.out.println(i);//15
}
}
package www.bh.c.datetest;
import java.util.Calendar;
import java.util.Date;
//getTime():日历类--->Date
public class Test07 {
public static void main(String[] args) {
Calendar instance = Calendar.getInstance();
Date time = instance.getTime();
System.out.println(time);//Thu Nov 12 15:45:23 CST 2020
}
}
package www.bh.c.datetest;
import java.util.Calendar;
import java.util.Date;
//setTime():Date--->日历类
public class Test07 {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);//Thu Nov 12 15:51:14 CST 2020
Calendar instance = Calendar.getInstance();
instance.setTime(date);
int days=instance.get(Calendar.DAY_OF_MONTH);
System.out.println(days);//12
}
}