Date、Calendar、SimpleDateFormat之间的关系

Date --具体类

1.Date类中很多方法都标有删除线,是因为Date类在设计中有缺陷,如getYear指的是1970年以来的秒数,月份是从0开始的。事实上,不止Date类,Java的日期时间相关类都存在设计问题。Java的日期类库有些混乱.
2.Date 的显示(实际上是 toString() 方法)描述了这些信息,但 Java 并不建议我们用这种方式直接来构件 Date 对象。因此我们需要找出哪个对象可以实现这个需求。这就是我们下面就要讲述的 Calendar 对象的功能。
3.记住 Date 只是一个对 long 值(基于 GMT 时区)的对象封装。它所表现出来的年/月/日小时:分钟时区的时间表述,只是它的 toString() 方法所提供的。千万不要为这个假象所迷惑。

 	 Date date = new Date();
     System.out.println(date.getTime());//1670599545104

Calendar —抽象类

就是对Date类的设计和优化
子类 GregorianCalendar 则实现了 Calendar 中的相关抽象方法。
GregorianCalendar
该方法的使用方法都和抽象类 Calendar 一致。 但是又扩展了一些构造方法。 便易使用。

Date 中过时的被取代方法

int getDate() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。
int getDay() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。
int getHours() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。
int getMinutes() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。
int getMonth() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。
int getSeconds() 已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。

基础和常用

Calendar calendar = Calendar.getInstance();
  Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH)+1);//月份 +1
。。。。。。
		Calendar c=Calendar.getInstance();
		int year=c.get(Calendar.YEAR);
		int month=c.get(Calendar.MONTH)+1;
		int day=c.get(Calendar.DAY_OF_MONTH);
		int weekday=c.get(Calendar.DAY_OF_WEEK);
	    int hour=c.get(Calendar.HOUR);
	    int minute=c.get(Calendar.MINUTE);
	    int second=c.get(Calendar.SECOND);
	    int miliSecond=c.get(Calendar.MILLISECOND);
	    System.out.println("现在是" + year + "年" + month + "月" + day + "日");
		//修改
	    c.add(hour, 12);
	    System.out.println(c.get(Calendar.HOUR));
	    //设置
	    c.set(Calendar.YEAR, 2000);
	    System.out.println(c.get(Calendar.YEAR));
	    c.set(2018, 5, 2);
	    year =c.get(Calendar.YEAR); 
        month = c.get(Calendar.MONTH);
        day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println("现在是" + year + "年" + month + "月" + day + "日");

SimpleDateFormat

就是自定义显示日期的格式,比方说年份在最后或者最前的定义
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

        Date date = new Date(System.currentTimeMillis());
		//定义模板 EEEE-MMMM-dd-yyyy 和 时间中加字符@  EEEE-MMMM-'@@'dd-yyyy  
        SimpleDateFormat bartDateFormat = new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
        System.out.println(bartDateFormat.format(date));//星期五-十二月-09-2022
        SimpleDateFormat bartDateFormat = new SimpleDateFormat("EEEE-MMMM-'@@'dd-yyyy");
		System.out.println(bartDateFormat.format(date));//星期五-十二月-@@09-2022
//format()函数底层调用 具体看API
format(Date date, StringBuffer toAppendTo, FieldPosition pos) 
          将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer。
          
    public final String format(Date date)
    {
        return format(date, new StringBuffer(),
                      DontCareFieldPosition.INSTANCE).toString();
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值