Java 日期时间

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));
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值