专栏首页工科狗和生物喵【计算机本科补全计划】Java学习笔记(九) Java日期时间

【计算机本科补全计划】Java学习笔记(九) Java日期时间

正文之前

终于好像仿佛看完了菜鸟教程的Java课程,感觉自己收获颇丰!很好,Java看完之后正愁如何开始进阶呢!结果发现菜鸟还准备了Java实例这种好东西!简直就是教程界的良心啊 !!!没事,先写写笔记,明天再来一个个实现!!今天先说说时间类,(本来准备将正则的,但是待会要去健身房了,所有先不说了!)

正文

### 1、 Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。

Date( )

第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。

Date(long millisec)

对象创建完毕之后,可以调用如下的方法:

序号

方法和描述

1

boolean after(Date date)若当调用此方法的Date对象在指定日期之后返回true,否则返回false。

2

boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。

3

Object clone( ) 返回此对象的副本。

4

int compareTo(Date date) 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。

5

int compareTo(Object obj) 若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。

6

boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。

7

long getTime( ) 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

8

int hashCode( ) 返回此对象的哈希码值。

9

void setTime(long time) 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。

10

String toString( ) 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

代码示例:

import java.util.Date;

public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();


       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}
Tue Dec 05 19:05:36 CST 2017
[Finished in 1.5s]

2、日期比较

Java使用以下三种方法来比较两个日期:

  • 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
  • 使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
  • 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
import java.util.*;
import java.text.*;

public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 对象
        Date date = new Date();
        // 使用 toString() 函数显示日期时间
        System.out.println(date.toString());


        Date dNow = new Date( );
        SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
        System.out.println("Current Date: " + ft.format(dNow));

        if(date.getTime()<dNow.getTime() && date.before(dNow) && date.compareTo(dNow)!=0 )
        {
            System.out.println("Maybe I know the function getTime() before() and compareTo() now!!");
        }
   }
}

3、 使用 SimpleDateFormat 格式化日期

SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。例如:

import java.util.*;
import java.text.*;

public class DateDemo {
   public static void main(String args[]) {

      Date dNow = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

4、 日期和时间的格式化编码

时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:

5、 使用printf格式化日期

printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。

详情参见下面的例子:点击?,有惊喜哦!

6、 解析字符串为时间

SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。例如:

import java.util.*;
import java.text.*;

public class DateDemo {

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 

      String input = args.length == 0 ? "1818-11-11" : args[0]; 

      System.out.print(input + " Parses as "); 

      Date t; 

      try { 
          t = ft.parse(input); 
          System.out.println(t); 
      } catch (ParseException e) { 
          System.out.println("Unparseable using " + ft); 
      }
   }
}

7、 测量时间

下面的一个例子表明如何测量时间间隔(以毫秒为单位): 实例

import java.util.*;

public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

刚好以前有一个类似的。就放着吧,差不多!

8、 Calendar类

我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

创建一个代表系统当前日期的Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期

创建一个指定日期的Calendar对象使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

常量

描述

Calendar.YEAR

年份

Calendar.MONTH

月份

Calendar.DATE

日期

Calendar.DAYOFMONTH

日期,和上面的字段意义完全相同

Calendar.HOUR

12小时制的小时

Calendar.HOUROFDAY

24小时制的小时

Calendar.MINUTE

分钟

Calendar.SECOND

Calendar.DAYOFWEEK

星期几

其他具体的自己去教程看吧~~ 教程。含有API文档文档?

正文之后

最近很丧~~ 上周日考完CCF给我的伤害还在蔓延,给老师说想去实验室干活但是没有回音,今晚再说一次~ 还没有那就继续放养吧,反正也不会玩脱~~

本文分享自微信公众号 - 工科狗和生物喵(gh_3507b116a1f8),作者:HustWolf

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货:论如何扩大你的Wifi范围

    开篇语 出于某种不可告人的目的,在回家的前一天我来研究了一下如何增大无线网的范围的技术。大概折腾了两个小时之后,终于成功的完成了一个无线桥接的工作。暂时还没有...

    用户1687088
  • 怎样用U盘重装电脑系统?

    开篇语 鉴于我的傻徒弟最近想给电脑换个系统。应该是,羡慕我的电脑桌面清爽干净?那我就放一下我的windows10桌面好了(桌面壁纸,是因为装系统以后我那个超炫的...

    用户1687088
  • 【图】深度优先算法(DFS)

    用户1687088
  • 第七节:详细讲解Java中的日期,java.util.date

    大家好,我是 Vic,今天给大家带来详细讲解Java中的日期,java.util.date的概述,希望你们喜欢

    达达前端
  • salesforce 零基础学习(十六)Validation Rules & Date/time

    上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules。 本篇参考PDF:...

    用户1169343
  • Cisco FlexConnect介绍及部署

    在实际的企业环境中,瘦AP居多,胖AP几乎不会出现。瘦AP是WEB图形界面配置只能鼠标点点, 不像胖AP可以直接配置刷命令。 如果数量居多,操作起来就很不现实,...

    刘銮奕
  • 前端-如何继承 Date 对象?由一道题彻底弄懂 JS 继承

    于是,随手用JS中经典的组合寄生法写了一个继承,然后,刚准备完美收工,一运行,却出现了以下的情景:

    grain先森
  • 云数据中心网络虚拟化——网络虚拟化的传统技术之VLAN

    VLAN(Virtual LAN,虚拟局域网),是一个局域网的虚拟化技术,官方文件参考IEEE 802.1q。对于做网络的人来说,谈起它简直是如数家珍。VLAN...

    SDNLAB
  • 在 ASP.NET Core 项目中使用 MediatR 实现中介者模式

       最近有在看 DDD 的相关资料以及微软的 eShopOnContainers 这个项目中基于 DDD 的架构设计,在 Ordering 这个示例服务中,可...

    程序员宇说
  • 由蜜罐引发的物联网安全小谈

    最近几年,“物联网”正以迅雷不及掩耳之势四处圈地,“凡联网之物都能被黑”的恶名也如影随形。仅2015年,安全研究人员就发现了婴儿监控器、滑板、来复枪和吉普车等物...

    FB客服

扫码关注云+社区

领取腾讯云代金券