浅谈----Calendar 为什么基本可以替换Util.Date类

一个类的设计在之前可能考虑不周,后期进行不断修改完善—我猜的

话不多说–先看代码

关于Date的代码在上一篇已经提到了,感兴趣可以移步,下面是链接

https://blog.csdn.net/weixin_54061333/article/details/118581212

Calendar 类是一个抽象类,实例化的话需要子类—
在这里插入图片描述

public class Testdate {
    public static void main(String[] args) throws ParseException {
        Calendar calendar= new GregorianCalendar();
 System.out.println(calendar);

        

看看输出结果–


java.util.GregorianCalendar[time=1625804460911,areFieldsSet=true,
areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.
ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,
useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,
minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=6,WEEK_OF_YEAR=28,
WEEK_OF_MONTH=2,DAY_OF_MONTH=9,DAY_OF_YEAR=190,DAY_OF_WEEK=6,
DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=21,
SECOND=0,MILLISECOND=911,ZONE_OFFSET=28800000,DST_OFFSET=0]

Process finished with exit code 0

Calender类包含的东西很多,所以可以直接拿过来用,但是直接给用户看–用户保证不打死你;

别着急,

public class Testdate {
    public static void main(String[] args) throws ParseException {
        Calendar calendar= new GregorianCalendar();//父类通过子类实例化
        //System.out.println(calendar);
        StringBuffer stringBuffer= new StringBuffer();
        stringBuffer.append(calendar.get(Calendar.YEAR));
        stringBuffer.append(calendar.get(Calendar.MONTH)+1);
        stringBuffer.append(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(stringBuffer);
Calendar calendar1= Calendar.getInstance();//实例化的另一种方式
    }
}

看一下getInstance()源码–

public static Calendar getInstance()
{
Locale aLocale = Locale.getDefault(Locale.Category.FORMAT);
return createCalendar(defaultTimeZone(aLocale), aLocale);
}

该方法返回一个Calendar的实例(return createCalendar)
再来看一下createCalendar()源码

private static Calendar createCalendar(TimeZone zone,
Locale aLocale)
{
CalendarProvider provider =
LocaleProviderAdapter.getAdapter(CalendarProvider.class, aLocale)
.getCalendarProvider();

此方法根据时区不同返回不同的结果—国际化时间

Calendar类中还有很多其他方法

public class Testdate {
    public static void main(String[] args) throws ParseException {

Calendar calendar1= Calendar.getInstance();//实例化的另一种方式--
        System.out.println(calendar1.getFirstDayOfWeek());//获取一周的第一天是什么
        System.out.println(calendar1.getActualMaximum(Calendar.DATE));
        System.out.println(calendar1.getActualMinimum(Calendar.DATE));
    }
}

1
31
1

既然可以获得数据,同样可以设置数据--------


public class Testdate {
    public static void main(String[] args) throws ParseException {

Calendar calendar1= Calendar.getInstance();//实例化的另一种方式--
        calendar1.set(Calendar.YEAR,1992);
        calendar1.set(Calendar.MONTH,10);
        calendar1.set(1993,10,19);
        calendar1.set(1993,10,19,12,42,34);
        System.out.println(calendar1.get(Calendar.YEAR));
        System.out.println(calendar1.get(Calendar.MONTH));
        System.out.println(calendar1.get(Calendar.DAY_OF_MONTH));
//字符串转Calendar
        java.sql.Date date=java.sql.Date.valueOf("2022-12-11");
        calendar1.setTime(date);
        System.out.println("---------------------华丽的分割线---------------------------");
        System.out.println(calendar1.get(Calendar.YEAR));
        System.out.println(calendar1.get(Calendar.MONTH)+1);
        System.out.println(calendar1.get(Calendar.DAY_OF_MONTH));
    }
}

在这里插入图片描述
每天能学习一小步,日后精进一大步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CodeMartain

祝:生活蒸蒸日上!

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

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

打赏作者

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

抵扣说明:

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

余额充值