在JDK的java.util包中,提供了Date类用于表示日期和时间,精确到毫秒。随着JDK版本的不断升级和发展,Date类中的大部分构造方法和普通方法都已经不推荐使用。在JDK8中,Date类只有2个构造方法可以使用,具体如下。
1.Date():用来创建当前时间的Date对象。
2.Date(long date):用来创建指定时间的Date对象,初始化时间为在1970年1月1日0时0分0秒的基础上去加毫秒值表示的时间。
计算机的初始时间:记为1970年1月1日0时0分0秒。
package 日期与时间类;
import java.util.Date;
public class DateTest01 {
public static void main(String[] args) {
// 创建日期类
Date date1 = new Date();
// 获取当前基于环境的时间
System.out.println(date1);
long time = date1.getTime();
//计算当前时间距离1970年1月1日 00:00:00 的 毫秒值---时间戳
System.out.println(time);
Date date2 = new Date(90000);
//创建一个距离1970年1月1日 00:00:00 经过了多少毫秒的时间
System.out.println(date2);
}
}
SimpleDateFormat类可以使用new关键字创建实例对象,它的构造方法需要接收一个表示时间格式模板的字符串参数,用来以区域设置日期的格式化和解析。
SimpleDateFormat构造方法:
1. public SimpleDateFormat()//表示设置默认格式和日期 。
2. public SimpleDateFormat(String pattern)
SimpleDateFormat类格式化和解析涉及的方法:
1.格式化方法:(Date-->SimpleDateFormat)
2.解析方法:(String---->Date)
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest02 {
public static void main(String[] args) throws Exception {
//SimpleDateFormat 用来实现 日期 和 字符串 之间的相互转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date1 = new Date();
// 把日期转换成指定格式的字符串
String format = sdf.format(date1);
System.out.println(format);
// 把指定格式的 字符串 转换成 日期
String time = "2000/10/23 08:20:54";
Date date2 = sdf.parse(time);
System.out.println(date2);
}
}
Calendar类用于完成日期和时间字段的操作,可以通过特定的字段设置和读取日期的特定部分,比如年月日时分秒等。Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后才能调用其相应的方法,具体示例如下:
Calendar calendar=Calendar.getInstance();
Calendar类为操作日期和时间提供了大量的方法,例如:
1.int get(int field):返回指定日历字段field的值
2.void set(int field,int value):设置指定日历字段field的值value
3.void set(int year,int month,int date):设置Calendar对象的年月日3个字段的值
4.void set(int year,int month,int date,int hour,int minute,int second):设置Calendar对象的年月日6个字段的值
5.void add(int field,int amount):为指定的日历字段field增加或减少指定的时间量amount
6.Date getTime()返回一个表示当前Calendar表示的时间的Date对象,即Calendar———>Date
以上大多数方法int类型的参数field,该参数需要接收Calendar类中的常量值,分别代表着不同的字段。例如:
1.Calendar.YEAR:表示年份
2.Calendar.MONTH:表示月份。在使用该字段时,月份的起始值是从0开始的,因此要获取当前的月份需要在Calendar.MONTH的基础上+1
3.Calendar.DATE:表示日(天)
4.Calendar.HOUR:表示小时
5.Calendar.MINUTE:表示分钟
6.Calendar.SECOND:表示秒
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class CalenderTest01 {
public static void main(String[] args) {
//Calendar类是一个抽象类,可以通过Calendar 的getInstance方法返回一 个Calendar 对象
Calendar calendar = Calendar.getInstance();
//获取当前系统的时间
Date date1 = calendar.getTime();
System.out.println(date1);
Long timeInMillis = calendar.getTimeInMillis();
System.out.println("当前时间的亳秒值: " + timeInMillis);
TimeZone timeZone = calendar.getTimeZone();
System.out.println("时区: " + timeZone);
//get.方法可以根据指定的日历字段获取时间对应的值
int year = calendar.get(Calendar.YEAR);
System.out.println("年份: " + year);
int month = calendar.get(Calendar.MONTH);
//0-11 表示1-12月
System.out.println("月份: " + (month + 1));
int date = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("日期: " + date);
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println("本年的第: " + dayOfYear);
System.out.println("------------------------");
//可以获取指定时间月份0 - 11表示1 - 12月
calendar.set(2000, 9, 28, 15, 32,35);
Date date2 = calendar.getTime();
System.out.println(date2);
}
}