java——date时间类型操作

目录

1.date类型使用

2.获取想要的自定义时间点

3.date类型与String类型转换

4.date时间先后比较


1.date类型使用

在java中,日期时间用java.util.Date类来表示,调用默认构造器Date(),将会创建一个当前系统时间的Date对象,时间精确到毫秒:

Date date = new Date();

2.获取想要的自定义时间点

Date类型初始化时可以传入参数获取对应的年月日(注:该方式已被弃用,所以不建议使用)

我们想要输出一个时间常用Calendar时间操作类,set对应的年月日时分秒:

    public static Date getStartOfDay(Date time) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(time);
        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

上述代码可以获得当天的12点0分0秒。

我们还可以使用Calendar进行时间加减操作:

public class test {
    public static void main(String[] args) throws ParseException {
        System.out.println(getStartOfDay(new Date()));

    }
    public static Date getStartOfDay(Date time) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(time);
        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);

        //加10分钟
        calendar.add(Calendar.MINUTE, 10);
        //减30秒
        calendar.add(Calendar.SECOND, -30);

        return calendar.getTime();
    }
}

 

3.date类型与String类型转换

date类型可以使用SimpleDateFormat类型实现与String类型以定义好的日期格式互转:

(1)String转date:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date1 = sdf.parse("2023-03-30 12:00:00");
Date date2 = sdf.parse("2023-03-30 12:00:01");

(2)date转String:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String date = sdf.format(new Date());

此处有一个细节,时间格式中 yyyy-MM-dd HH:mm:ss 代表24小时制;yyyy-MM-dd hh:mm:ss 代表12小时制。(小时H和h的区别)

4.date时间先后比较

date类型比较时间先后一般可以用两种方式进行,对应两种格式:

(2)date格式下使用before和after函数:

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date1 = sdf.parse("2023-03-30 12:00:00");
        Date date2 = sdf.parse("2023-03-30 12:00:01");
        System.out.println(date1.before(date2));
        System.out.println(date1.after(date2));

(2)String格式下使用CompareTo函数:

public class test {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //系统当时时间
        String date1 = sdf.format(new Date());
        //系统当天12点
        String date2 = sdf.format(getStartOfDay(new Date()));
        System.out.println("时间点1:"+date1);
        System.out.println("时间点2:"+date2);
        //比较时间先后
        System.out.println(date1.compareTo(date2));

    }
    //获取当天12点
    public static Date getStartOfDay(Date time) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(time);
        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }
}

date1 时间点1晚于date2时间点2,所以输出的是大于0;小于0则是date1 时间点1早于date2时间点2;等于0则是两个时间点相同。

此处注意比较的两个时间需都是24小时制,否则会出现24小时制的12点晚于12小时制下午4点的比较错误的情况。

猜你喜欢

转载自blog.csdn.net/tang_seven/article/details/129956104
今日推荐