Java中日期和时间的处理及工具类封装

Java中日期和时间的处理及工具类封装

一、Date、Calendar(老版日期时间类)

1-1、Date使用

/**
 * ClassName:DateTest
 * Package:date
 * Description
 *
 * @Author:@wenxueshi
 * @Create:2023/7/22 - 16:20
 * @Version:v1.0
 */
//老版日期时间类之一:Date
public class DateTest {

    public static void main(String[] args) {
        //获取当前时间
        Date date = new Date();

        //不好看:Sat Jul 22 16:25:14 CST 2023
        System.out.println(date);

        //获取当前年份要+1900:2023年
        System.out.println(date.getYear() + 1900);

        //多加一个月才是真正的当前月份:7月
        System.out.println(date.getMonth() + 1);

        //日期是对的:22号
        System.out.println(date.getDate());

        //转化为本地时间:2023-7-22 16:25:14
        System.out.println(date.toLocaleString());

        //转化为GMT时区:22 Jul 2023 08:29:16 GMT
        System.out.println(date.toGMTString());
        
        Date date1 = new Date(System.currentTimeMillis());
        //根据当前系统时间戳初始化Date:Sat Jul 22 16:30:12 CST 2023
        System.out.println(date1);
    }
}

缺点:获取Date对象的年、月时都还需要额外的操作,不方便,而且Date类内部,对于大多数方法也已经废弃。

2-2、Calendar

Calendar相比较Date多了可以对时间运算的功能,也可以通过getTime方法把Calendar转化为Date.

public class CalendarTest {

    public static void main(String[] args) {
        //获取Calendar实例
        Calendar cal = Calendar.getInstance();
        //获取年、月、日、时、分、秒
        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));
    }
}

2-3、Date的格式化

2-3-1、DateFormat
public class DateFormatTest {

    public static void main(String[] args) {
        Date date = new Date();
        //处理日期转换
        DateFormat dateInstance = DateFormat.getDateInstance();
        // 2023-7-22
        System.out.println(dateInstance.format(date));

        //处理时间转换
        DateFormat timeInstance = DateFormat.getTimeInstance();
        //16:46:04
        System.out.println(timeInstance.format(date));

        //处理日期时间转换
        DateFormat dateTimeInstance = DateFormat.getDateTimeInstance();
        //2023-7-22 16:46:43
        System.out.println(dateTimeInstance.format(date));
    }
}

说明:DateFormat只可以处理固定的三种格式转换,一般我们是使用它的一个实现类SimpleDateFormat

2-3-2、SimpleDateFormat
public class SimpleDateFormat {

    public static void main(String[] args) {
        Date date = new Date();
        //自定义日期时间格式
        java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //2023-07-22 16:50:28
        System.out.println(dateFormat.format(date));

        java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy年MM月dd日 HH时:mm分钟:ss秒");
        //2023年07月22日 16时:52分钟:14秒
        System.out.println(format.format(date));
    }

二、LocalDateTime(Java8新版日期时间类)

1-1、基本用法

public class LocalDateTimeTest {

    public static void main(String[] args) {
        //获取日期时间
        LocalDateTime dateTime = LocalDateTime.now();
        //获取年、月、日、时、分、秒
        System.out.println(dateTime.getYear());
        System.out.println(dateTime.getMonthValue());
        System.out.println(dateTime.getDayOfMonth());
        System.out.println(dateTime.getHour());
        System.out.println(dateTime.getMinute());
        System.out.println(dateTime.getSecond());

        //自定义日期时间
        LocalDateTime localDateTime = LocalDateTime.of(2023, 7, 22, 16, 58, 00);
        System.out.println(localDateTime);
    }
}

1-2、格式化

public class LocalDateTimeTest {

    public static void main(String[] args) {
        //获取日期时间
        LocalDateTime dateTime = LocalDateTime.now();

        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分钟ss秒");
        //2023年07月22日 17时03分钟25秒
        System.out.println(dateTimeFormatter.format(dateTime));
    }
}

三、工具类封装

//日期时间类封装
public class DateTimeUtil {
    //格式:2023-07-22
    private static final String DATE_FORMAT = "yyyy-MM-dd";

    //格式:2023-07-22 16:50:28
    private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    //格式:2023-07-22 16:50:28
    private static final String DATE_TIME_DEF_FORMAT = "yyyy年MM月dd日 HH时mm分钟ss秒";

    public static String date(){
        return new SimpleDateFormat(DATE_FORMAT).format(new Date());
    }

    public static String dateTime(){
        return new SimpleDateFormat(DATE_TIME_FORMAT).format(new Date());
    }

    public static String dateDefTime(){
        return new SimpleDateFormat(DATE_TIME_DEF_FORMAT).format(new Date());
    }

    public static void main(String[] args) {
        //2023-07-22
        System.out.println(DateTimeUtil.date());
        //2023-07-22 17:16:43
        System.out.println(DateTimeUtil.dateTime());
        //2023年07月22日 17时16分钟43秒
        System.out.println(DateTimeUtil.dateDefTime());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

six-key

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值