1、Date
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
第一个构造函数使用当前日期和时间来初始化对象。
Date( )
第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
Date(long date)
2、Date常用方法
3、使用printf格式化日期
printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。
实例
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();
//c的使用
System.out.printf("全部日期和时间信息:%tc%n",date);
//f的使用
System.out.printf("年-月-日格式:%tF%n",date);
//d的使用
System.out.printf("月/日/年格式:%tD%n",date);
//r的使用
System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);
//t的使用
System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);
//R的使用
System.out.printf("HH:MM格式(24时制):%tR",date);
}
}
4、Calendar类
抽象类 Calendar 提供了一组方法,允许把以毫秒为单位的时间转换成一些有用的时间组成部分。Calendar 不能直接创建对象,但可以使用静态方法 getInstance() 获得代表当前日期的日历对象。
Calendar c = Calendar.getInstance();//默认是当前日期
5、Calendar方法
6、Calendar类对象字段类型
Calendar类中用以下这些常量表示不同的意义
7、Calendar类对象信息的设置
Set设置
如:
Calendar c1 = Calendar.getInstance();
调用:
public final void set(int year,int month,int date)
c1.set(2019, 11, 14);//把Calendar对象c1的年月日分别设这为:2019、11、14
利用字段类型设置
如果只设定某个字段,例如日期的值,则可以使用如下set方法:
public void set(int field,int value)
把 c1对象代表的日期设置为15号,其它所有的数值会被重新计算
c1.set(Calendar.DATE,15);
把c1对象代表的年份设置为2018年,其他的所有数值会被重新计算
c1.set(Calendar.YEAR,2018);
Add设置
Calendar c1 = Calendar.getInstance();
把c1对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新计算
c1.add(Calendar.DATE, 10);
把c1对象的日期减去10,也就是c1也就表示为10天前的日期,其它所有的数值会被重新计算
c1.add(Calendar.DATE, -10);
其他字段属性的add的意义以此类推
Calendar类对象信息的获得
Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);
8、LocalDate和LocalTime
在JAVA中,常用的处理日期和时间的类主要有Date,Calendar,而在JDK1.8中,新增了两个处理日期和时间的类,一个是LocalDate,另一个是LocalTime。LocalDate和LocalTime线程安全,而且不能修改。
LocalDate主要是用来处理日期的类
主要有以下方法:
LocalTime主要是用来处理时间的类
主要有以下方法:
代码实例:
package timedemo;
import org.junit.Test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @author 黄秋平
* @date 2019-11-15 16:52
**/
public class DateTest {
/**
* 日期格式化
* */
@Test
public void Test01(){
/**
* SHORT是完全数字的,如12.13.52或3:30pm
* MEDIUM较长,如Jan 12, 1952
* LONG较长,如January 12, 1952或3:30:32pm
* FULL是完全指定的,如Tuesday, April 12, 1952 AD or 3:30:42pm PST
*
* */
//获取不同格式化风格和中国环境的日期
DateFormat df1=DateFormat.getDateInstance(DateFormat.SHORT);
DateFormat df2=DateFormat.getDateInstance(DateFormat.FULL);
DateFormat df3=DateFormat.getDateInstance(DateFormat.MEDIUM);
DateFormat df4=DateFormat.getDateInstance(DateFormat.LONG);
//获取不同格式化风格和中国环境的时间
DateFormat df5=DateFormat.getTimeInstance(DateFormat.SHORT);
DateFormat df6=DateFormat.getTimeInstance(DateFormat.FULL);
DateFormat df7=DateFormat.getTimeInstance(DateFormat.MEDIUM);
DateFormat df8=DateFormat.getTimeInstance(DateFormat.LONG);
//将不同格式化风格的日期格式化为日期字符串
String date1=df1.format(new Date());
String date2=df2.format(new Date());
String date3=df3.format(new Date());
String date4=df4.format(new Date());
//将不同格式化风格的时间格式化为时间字符串
String time1=df5.format(new Date());
String time2=df6.format(new Date());
String time3=df7.format(new Date());
String time4=df8.format(new Date());
//输出日期
System.out.println("SHORT:"+date1+" "+time1);
System.out.println("FULL:"+date2+" "+time2);
System.out.println("MEDIUM:"+date3+" "+time3);
System.out.println("LONG:"+date4+" "+time4);
}
/**
* 对日期增减操作:年
* */
@Test
public void Test02(){
//实例化Date对象
Date date = new Date();
//实例化SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//输出当时间
System.out.println("当前时间:"+sdf.format(date));
//返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化
Calendar cal = Calendar.getInstance();
//设置字段中的值
cal.setTime(date);
//amount值表示对当前时间增减,1为+1,-1为-1
cal.add(Calendar.YEAR, 10);
//实例化Date对象
Date date1 = cal.getTime();
//输出增减后的时间
System.out.println("增减后的时间:"+sdf.format(date1));
}
/**
* 对日期增减操作:月
* */
@Test
public void Test03(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("当前时间:"+sdf.format(date));
Calendar cal = Calendar.getInstance();
cal.setTime(date);
//amount值表示对当前时间增减,1为+1,-1为-1
cal.add(Calendar.MONTH, 10);
Date date1 = cal.getTime();
System.out.println("增减后的时间:"+sdf.format(date1));
}
/**
* 对日期增减操作:小时
* */
@Test
public void Test04() {
String oneHoursAgoTime = "";
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH");
System.out.println("当前时间:"+sdf.format(date));
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
rightNow.add(Calendar.HOUR, -1);
Date dt1 = rightNow.getTime();
System.out.println("增减后的时间:"+sdf.format(dt1));
}
}