Date、SimpleDateFormat、Calendar

Date类

什么是date:

Date表示特定的瞬间,精确到毫秒。

我们在Api手册查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。

 我们要获取当前时间,例:

 Date date1=new Date(); //获乡前基于环境的时间
 System.out.println(date1);

 运行结果为:

Fri为星期五,Dec为十二月,02就是二号,后面是时分秒,CST代表东八区,然后是2022年

 提示:由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒

 我们也可以人为的制造一个时间为2022年12月2号:

Date date2 = new Date(2022,12,2);
          System.out.println(date2);

 运行结果如下:

 我们可以看到结果并不是我们想象的那样。

原因是什么呢?

原来他的时间并不是以公元00年为起点的,而是year加上1900。

我们可以看一下Date类返回值的表现形式:

 通过这个,我们可以看到标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来指定毫秒数

 如果我们要计算现在时间到1970 年 1 月 1 日 00:00:00毫秒值:

Long time = date1.getTime(); //计算当前时间距离1970年1月1日 80:00:00 的 秒-------时间戳
System.out.println(time);

 结果如下:

 

 我们计算从1970年1月1日 08:00:00(东八区)经过了60000毫秒时间之后是什么时间:

Date date2=new Date(60000); //创建一个距离1970年1月1日 08:00:00 (东八区) 经过了多少毫秒的一个时间
System.out.println(date2);

结果如下:

 SimpleDateFormat类

 什么是SimpleDateFormat类:

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstancegetDateInstancegetDateTimeInstance 来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用 applyPattern 方法来修改格式模式。有关使用这些方法的更多信息,请参阅 DateFormat

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。

DateFormat 提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用这些风格的更多细节和示例。

DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。

DateFormat是一个抽象类 , 一般使用它的的子类SimpleDateFormat类来实现。

 我们在这个SimpleDateFormat 类里面定义了一个模式:

 我们来看一下运用这个模式输出的时间:

//SimpleDateFormat 用来实现 日期 和 字符串 之间的相互转换
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //建日期格式化类的对象,指定格式符号
Date date1=new Date();//获取当前系统时间

 运行结果如下:

这种方式就比上面那种格式好认的多 

 我们这个类里面有这些方法:

 在这些方法中,我们主要运用format方法和parse方法:

//把 日期 转换成指定式的 字符串
String format = sdf.format(date1);
System.out.println(format);
//把指定格式的 字符串 转换成 日期
String time="2000/10/20 8:20:38";
Date date2 = sdf.parse(time);
System.out.println(date2);

Calendar类

什么是Calendar类:

Calendar 是日历类在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的获取方式
Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:Calendar静态方法
public static calendar getInstance0): 使用默认时区和语言环境获得一个日历

常用方法:

根据Calendar类的API文档,常用方法有:

  • public int get(int field): 返回给定日历字段的值。
  • public void set(int field,int value): 将给定的日历字段设置为给定值。
  • public abstract void add(int fied,int amount): 根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • public DategETime0): 返回一个表示此Calendar时间值 (从历元到现在的毫秒偏移量)的Date对象  

部分方法: 

 

 我们挑几个重要的代码向大家演示一下:

public static void main(String[] args) {
        //Calendar 类是一个抽象类,可以通过Calendar 的 getInstance 方法返回一个 Calendar 对象
        Calendar calendar=Calendar.getInstance();
        Date date1=calendar.getTime();//获取当前系统的时间
        System.out.println(date1);

        long timeInMillis = calendar.getTimeInMillis();
        System.out.println("当前时间的毫秒值:"+timeInMillis);

        TimeZone timeZone = calendar.getTimeZone();
        System.out.println("时区"+timeZone);

        //get方法可以根据指定的日历字段,获取时间对应的值
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int date = calendar.get(Calendar.DATE);
        int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("年份:"+year+"  "+"月份:"+(month+1)+"  "+"日期:"+date+"  "+"本年的第:"+dayOfYear+"天");//0-11 表示1-12月
        //可以获取 指定日期月份0-11 表示1-12月
        calendar.set(2000, 9, 28, 15,59,61);
        Date date2 = calendar.getTime();
        System.out.println(date2);


    }

效果如图:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值