Java 时间转换和简单取值

本文介绍了一个实用的日期时间转换工具类,提供了多种日期与字符串之间的转换方法,包括精确到秒和仅日期的格式。此外,还包含了计算两个日期间相差天数及获取指定日期范围内所有日期的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class DateFormatUtil {
    private static final Logger log = LoggerFactory.getLogger(DateFormatUtil.class);

    /**
     * Date >>>> String  (yyyy-MM-dd HH:mm:ss)
     * @param date
     * @return
     */
    public static String date2String(Date date){
        //设置要获取到什么样的时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //获取String类型的时间
        String stringDate = sdf.format(date);
        return stringDate;
    }

    /**
     * String >>>> Date (yyyy-MM-dd HH:mm:ss)
     * @param str
     * @return
     */
    public static Date string2Date(String str){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date parse = null;
        try {
            parse = dateFormat.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return parse;
    }

    /**
     * Date >>>> String
     * @param date
     * @return
     */
    public static String date2StringDay(Date date){
        //设置要获取到什么样的时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //获取String类型的时间
        String stringDate = sdf.format(date);
        return stringDate;
    }

    /**
     * String >>>> Date (yyyy-MM-dd)
     * @param str
     * @return
     */
    public static Date string2DateDay(String str){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date parse = null;
        try {
            parse = dateFormat.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return parse;
    }


    /**
     * Date >>>> long
     * @param date
     * @return
     */
    public static long date2Long(Date date){
        //获得long类型的时间戳(毫秒)
        return date.getTime();
    }

    /**
     * long >>>> Date
     * @param lo
     * @return
     */
    public static Date long2Date(Long lo){
        return new Date(lo);
    }

    /**
     * long >>>> String
     * @param lo
     * @return
     */
    public static String long2String(long lo){
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date(lo);
        return sdf.format(date);
    }

    /**
     * String >>>> long  (yyyy-MM-dd HH:mm:ss)
     * @param str
     * @return
     */
    public static Long string2Long(String str){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long time = 0;
        try {
            Date  parse = dateFormat.parse(str);
            time = parse.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return time;

    }

    /**
     * 获得系统时间的时间戳
     * @return
     */
    public static long systemTimestamp(){
        //得到系统当前时间的时间戳(毫秒)
        return System.currentTimeMillis();
    }

    /**
     * 求两个时间之间相差的天数(不足24小时不计算天数)
     * @param begin
     * @param end
     * @return
     */
    public static long daysBetween(Date begin, Date end) {
        long difference =  (end.getTime() - begin.getTime())/86400000;
        return Math.abs(difference);
    }

    /**
     * 获取两个日期之间的所有日期(yyyy-MM-dd)
     * @param begin
     * @param end
     * @return
     */
    public static List<Date> getBetweenDates(Date begin, Date end) {
        List<Date> result = new ArrayList<Date>();
        Calendar tempStart = Calendar.getInstance();
        tempStart.setTime(begin);
        while(begin.getTime()<=end.getTime()){
            result.add(tempStart.getTime());
            tempStart.add(Calendar.DAY_OF_YEAR, 1);
            begin = tempStart.getTime();
        }
        result.add(end);
        return result;
    }


    public static void main(String[] args) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(new Date());
        // 获得年份
        int year = c1.get(Calendar.YEAR);
        log.info("year===="+year);
        // 获得月份
        int month = c1.get(Calendar.MONTH) + 1;
        log.info("month===="+month);
        // 获得日期
        int day = c1.get(Calendar.DATE);
        log.info("day===="+day);
        // 获得小时
        int hour = c1.get(Calendar.HOUR_OF_DAY);
        log.info("hour===="+hour);
        // 获得分钟
        int minute = c1.get(Calendar.MINUTE);
        log.info("minute===="+minute);
        // 获得秒
        int second = c1.get(Calendar.SECOND);
        log.info("second===="+second);
        // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
        int week = c1.get(Calendar.DAY_OF_WEEK);
        log.info("week===="+week);

        long l = daysBetween(new Date(), string2Date("2018-9-10 05:09:22"));
        log.info("两个时间相差天数===="+l);

        List<Date> betweenDates = getBetweenDates(new Date(), string2Date("2018-9-10 05:09:22"));
        log.info("betweenDates===="+betweenDates.toString());

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值