Java核心类----日期类

本文详细介绍了Java中Date和Calendar类的使用,包括日期创建、时间操作、格式化和时区设置。重点讲解了如何处理当前时间、设置时间戳、日期比较以及日历的复杂操作,适合初学者和进阶开发者参考。

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

日期类

java.util.Date(日期)

  • new Date()
    创建一个 当前系统时间的日期对象
  • new Date(long)
    创建一个 距离 1970/1/1 多少毫秒的时间
  • toInstant()
  • Date.from(instant)
  • setTime(time) / getTime()
    设置 / 获取 距离 1970/1/1 的毫秒数
  • System.currentTimeMillis()
    获取系统时间戳
  • before(date) / after(date)
    判断日期是否在某个日期的前/后
  • SimpleDateForm(pattern)
    日期格式化类
    • format(date)
      将日期转成 字符串
    • parse(str)
      将 字符串转成 日期
    • setTimeZone(timezone)
      设置时区
    • pattern模式匹配串
      yyyy 年份
      MM月份
      dd日/天
      HH / hh小时
      mm分钟
      ss秒
      SSS毫秒
      E星期

java.util.Calendar(日历)

  • getInstance()
    创建日历对象
Calendar rightNow = Calendar.getInstance();
  • Calendar常量
    • 日期常量

YEAR
MONTH
DAY_OF_MONTH / DATE
DAY_OF_YEAR
DAY_OF_WEEK
HOUR_OF_DAY

 - 时间常量

MINUTE
SECOND
MILLISECOND

  • 星期常量
  • 月份常量
 		Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);

        //将日历重置为2021年8月1日
        calendar.set(2021,7,1);
        System.out.println(calendar);

        System.out.println("当前年份为:"+calendar.get(Calendar.YEAR));
		//获取月份的最大值
        int actualMaximum = calendar.getActualMaximum(Calendar.MONTH);
        System.out.println(actualMaximum);
        //获取高精度时间戳
        Instant instant = calendar.toInstant();
        System.out.println(instant);
日历的制作
public class CalendarPrintTest {
    public static void main(String[] args) throws Exception{
        // 8 代表八月份
        showCalendar(2021,8);

    }
    public static void showCalendar(int year , int month){

        System.out.println(  "\t\t"+year + "年" + month + "月");
        //将传入的日期月份 - 1
        month = month - 1 ;

        String[] weeks = {"一","二","三","四","五","六","日"} ;

        for (String week:weeks) {
            System.out.print(week + "\t");

        }
        System.out.println();
        //构建一个日历对象
        Calendar calendar = Calendar.getInstance();
        //调整日历到对应的时间
        calendar.set(year , month,1);

        //获取1号是星期几 (1 - 7)代表周日到周六
        int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;

        //对周日进行特殊处理
        if (week == 0){
            week =7 ;
        }
        //week = 7 前面要打印6个空格
        //week = 1 前面要打印0个空格
        //week = 2 前面要打印1个空格
        //打印日历中该月的空格数
        for (int i = 1; i < week; i++) {
            System.out.print("\t");
        }
        //获取当前月最大的天数
        int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        //i 代表当月的每一天
        for (int i = 1; i < maxDay; i++) {
            System.out.print(i + "\t");

            //换行的问题
            //空格数+ 对应的日 如果是7的倍数  进行换行
            if ((week - 1 +i )%7 == 0){
                System.out.println();
            }
        }
    }
}
Calendar对象常见的方法
  • set(year , month , day)
    设置日历、month 从0开始
  • set(field , val)
    field 代表 Calender常量,val 代表设置 常量代表的 值
  • get(field)
    获取 Calender常量对应的值
  • getActualMaximum(field)
    获取 Calender 常量 代表的 最大值
  • toInstant()
  • getTime()
    获取 Date 对象
  • setTimeZone(timezone)
    设置时区
    PS : 月份 0 - 11 代表 1- 12月
    星期 1 - 7 代表 周日 - 周六

时区

  • TimeZone.getAvailableIDs()
    获取系统支持的所有时区
  • TimeZone.getTimeZone(“Asia/Shanghai”)
    获取中国时区
  • toZoneId()

格式化字符

在这里插入图片描述

SimpleDateFormat

        //创建一个日期对象
        Date date= new Date();

        //创建一个格式化日期的对象
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E a");

        //将日期以指定格式转换成字符串
        String format = df.format(date);
        System.out.println(format);

        //重新设置模式匹配串
        df.applyPattern("yyyy-MM-dd");

        String str = "1998-07-17";
        Date parse = df.parse(str);

        System.out.println(parse);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值