java中Date、LocalDate、LocalTime、时间戳的相互转化和基本使用方法

目录

1、Date

1、Date格式化工具——SimpleDateFormate用于时间的格式化

2、SimpleDateFormate中的常用方法

2、LocalDate与LocalTime 

1、LocalDate的常用方法

2、LocalTime的创建、构造

3、LocalDate、LocalTime格式化工具——DateTimeFormatter

4、parse()与format()

3、calendar

4、时间戳

1、时间戳转换为自定义格式的时间字符串

1、时间戳转换为Date

5、时间间隔计算

1、Date

1、Date格式化工具——SimpleDateFormate用于时间的格式化

        1、yyyy-MM-dd HH:mm:ss(24小时制)

        2、yyyy-MM-dd HH:mm:ss(12小时制)

        3、yyyy-MM-dd HH:mm:ss.SSS(年-月-日 时:分:秒.毫秒)

2、SimpleDateFormate中的常用方法

        format(Date date)方法实现Date数据、Calendar数据转换为指定格式的字符串

        parse(String dateStr)方法将时间格式的String转化为Date数据

import java.text.SimpleDateFormat;
import java.util.Date;

public class demo {
    public static void main(String[] args) {
        Date d=new Date();
        SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); 
        System.out.println("今天的日期:"+df.format(d));
        System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - (long)2 * 24 * 60 * 60 * 1000)));
        System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + (long)3 * 24 * 60 * 60 * 1000)));
    }
}

2、LocalDate与LocalTime 

LocalDate无法包含时间,LocalTime无法包含日期,LocalDateTime才能同时包含时间和日期。

1、LocalDate的常用方法

import java.text.ParseException;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class demo {
    public static void main(String[] args) throws ParseException {
        // 获取今天的日期
        LocalDate today = LocalDate.now();
        // 今天是本月几号
        int dayOfMonth = today.getDayOfMonth();
        // 今天是周几(返回的是个枚举类型,需要再getValue())
        int dayOfWeek = today.getDayOfWeek().getValue();
        // 今天是今年中的第几天
        int dayOfYear = today.getDayOfYear();

        // 根据字符串取:严格按照yyyy-MM-dd验证,02写成2都不行,如何想改变格式通过DateTimeFormatter实现
        LocalDate endOfFeb = LocalDate.parse("2023-02-28");

        // 取本月第1天
        LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth());
        // 取本月第3天
        LocalDate secondDayOfThisMonth = today.withDayOfMonth(3);
        // 取本月最后一天,不用计算是28,29,30还是31
        LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());
        // 取下一天
        LocalDate firstDayOfNextMonth = today.plusDays(1);
        // 取2023年9月第一个周一
        LocalDate firstMondayOf2023 = LocalDate.parse("2023-09-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));

        System.out.println(firstDayOfNextMonth);
    }
}
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
import java.util.Date;

public class demo {
    public static void main(String[] args) {
        LocalDate beginTime = LocalDate.now();
        // 月份运算
        LocalDate entTime = beginTime.plus(Period.ofMonths(6));
        // LocalDate 转 Date
        Date date = Date.from(beginTime.atStartOfDay(ZoneId.systemDefault()).toInstant());
    }
}

2、LocalTime的创建、构造

import java.time.LocalTime;

public class demo {
    public static void main(String[] args) {
        LocalTime now = LocalTime.now();
        // 构造
        LocalTime zero = LocalTime.of(0, 0, 0);
        LocalTime mid = LocalTime.parse("12:00:00");
    }
}

3、LocalDate、LocalTime格式化工具——DateTimeFormatter

import java.text.ParseException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class demo {
    public static void main(String[] args) throws ParseException {
        
        LocalDate today = LocalDate.now();
        DateTimeFormatter formatters1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        //formatters1 与 today 位置可以互换
        String text = formatters1.format(today);
        
        LocalTime now = LocalTime.now();
        //formatters2 与 now 位置可以互换
        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("hh mm ss.SSS");
        String midStr = mid.format(formatter2);
        System.out.println(midStr);
    }
}

4、parse()与format()

parse调用 format调用
SimpleDateFormate

1、创建SimpleDateFormate,确定格式

2、传入时间字符串,sdf.parse(timeStr)

1、创建SimpleDateFormate,确定格式

2、sdf.format(date)

LocalDate

LocalDate.parse(timeStr)

字符串格式严格按照yyyy-MM-dd验证

1、创建DateTimeFormatter,确定格式

2、dtf.format(dateStr)

LocalTime LocalTime.parse(timeStr)

1、创建DateTimeFormatter,确定格式

2、dtf.format(timeeStr)

3、calendar

getTime()获取时间,add()修改时间,get()获取指定部分时间

import java.util.Calendar;

public class demo {
    public static void main(String[] args) {
        // 使用默认时区和语言环境获得一个日历
        Calendar cal = Calendar.getInstance();
        Date nowTime = calendar.getTime();
        calendar.add(Calendar.DATE, 5);
        Date startTime = calendar.getTime();
        // 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1
        System.out.println("年:" + cal.get(Calendar.YEAR));
        System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));
        System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:" + cal.get(Calendar.MINUTE));
        System.out.println("秒:" + cal.get(Calendar.SECOND));
    }
}

4、时间戳

Unix时间戳(Unix timestamp)定义为从1970年01月01日00时00分00秒(UTC)起至现在经过的总秒数,是我们北京时间的1970年01月01日08时00分00秒

13位时间戳精确到毫秒,10位精确到秒

1、时间戳转换为自定义格式的时间字符串

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;

public class demo {
    public static void main(String[] args) {
        //获取当前毫秒级时间戳
        Long time = System.currentTimeMillis();
        System.out.println(time);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        //返回的是指定格式的string类型时间
        String date = sdf.format(time);
        System.out.println(date);
}

1、时间戳转换为Date

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;

public class demo {
    public static void main(String[] args) {
        //获取当前毫秒级时间戳
        Long time = System.currentTimeMillis();
        Date date = new Date(time);
        System.out.println(date);
}

5、时间间隔计算

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class demo {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        // 定义两个时间
        String startTime = "1949-10-1 00:00:00.000";
        String endTime = "2023-8-21 20:10:10.010";

        // 将两个String类型的时间转换为Date类型,从而计算差值、parse()方法的作用是将String类型的时间解析为Date类型
        Date d1 = df.parse(startTime);
        Date d2 = df.parse(endTime);

        System.out.println((((d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000))) / 365 + "年");
        // 以下总和为时间差
        System.out.println((d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000) + "天");
        System.out.println((((d2.getTime() - d1.getTime()) / (60 * 60 * 1000)) % 24) + "小时");
        System.out.println((((d2.getTime() - d1.getTime()) / 1000) % 60) + "分钟");
        System.out.println(((d2.getTime() - d1.getTime()) / (60 * 1000)) % 60 + "秒");
        System.out.println((((d2.getTime() - d1.getTime())) % 1000) + "毫秒");

    }
}

你可能感兴趣的:(java)