Date 类

所在的包:java.util.Date

Date 类表示特定的瞬间,精确到毫秒。创建对象的值为从1970年1月1日00:00:00

到当前系统显示时间所经历的毫秒数。

例如:public static void main(String[] args) {

// 获取当前时间到1970-1-1 00:00:00 经历了多少毫秒

System.out.println(System.currentTimeMillis());

}因为中国属于东八区,会把时间增加8个小时。1970-1-1 08:00:00

Date 类因为2000年出现的千年虫问题,导致该类的很多方法都已经过时,无法使用。但是其中未过时的构造函数可以把毫秒值转成常见的日期格式。

还有个别的方法可以使用:

1、getTime(); 返回从1970年1月1日00:00:00到当前系统显示时间所经历的毫秒数。

2、setTime(long time); 设置从1970年1月1日00:00:00以后 time 毫秒的时间点。

Date类的语法: Date date =new Date();public static void main(String[] args) {

test1();

test2();

test3();

}

// date类空参数构造方法,获取当前系统时间

private static void test1() {

Date aa = new Date();

System.out.println(aa); //Thu Dec 20 23:46:26 CST 2018

}

//date类带参数构造方法,(long date)传递毫秒数,把毫秒值转换为Date日期

private static void test2() {

Date bb = new Date( );

System.out.println(bb); //Thu Dec 20 23:36:21 CST 2018

}

//getTime() 把日期转换成毫秒

private static void test3() {

Date cc = new Date();

long cc1 = cc.getTime();

System.out.println(cc1); //1545320786661

}

DateFormat 类

所在的包:java.text.DateFormat:

DateFormat 是日期(时间)格式化子类的抽象类(抽象类不可以实例化)

通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

功能:

格式化:按照指定的格式,从Date对象转换为String对象。(日期 -> 文本)

解析:按照指定的格式,从String对象转换为Date对象。(文本-> 日期)

成员方法:format():将日期格式化 中国的时间显示方式为:yyyy-MM-dd HH:mm:ss

parse():将格式的日期转为日期格式

注:parse方法声明了一个异常叫ParseException,如果字符串和构造方法的模式不一样,那么程序就会抛出此异常

调用一个抛出了异常的方法,就必须的处理这个异常,要么throws(throws ParseException)继续抛出这个异常,要么try catch自己处理

因为DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类:SimpleDateFormat

构造方法:SimpleDateFormat(String pattern)

用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

例:public static void main(String[] args) {

Date date = new Date();

System.out.println(date);

//对日期进行格式化。创建SimpleDateFormat对象,构造方法中传递指定的模式

SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把日期格式化成字符串(文本)

String b = a.format(date);

System.out.println(b);

//将格式化的时间方式转为日期格式

SimpleDateFormat a2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//异常处理

try {

Date d = a2.parse("2018-12-21 15:25:05");

System.out.println(d);

} catch(ParseException e) {

System.out.println("转换失败!");

}

}

输入:

例:计算一个人已经出生多少天?public static void main(String[] args) throws ParseException {

Scanner sc = new Scanner(System. in );

System.out.println("请输入你的出生日期:(格式为:yyyy-MM-dd)");

String baby = sc.next();

// 对日期进行格式化

SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd");

Date bab = a.parse(baby);

// 对格式化的日期转换成毫秒数

long babs = bab.getTime();

// 获取当前日期,转换成毫秒数

long today = new Date().getTime();

// 相减

long t = today - babs;

// 转换成天

System.out.println(t / 1000 / 60 / 60 / 24);

}

输出:

Calendar 日历类

所在包:java.util.Calendar

该类的存在就是为了操作时间的

Calendar 类是一个抽象类,没有自身的实现类,但是可以通过自身提供的getInstance()获取日期对象。

static Calendar getInstance():使用默认时区和语言环境获得一个日历。

常用的方法:add(参数1,参数2);

参数1 表示操作的时间字段,

参数2 为正数为加法操作,为负数为减法操作@Test

public void test1() { //add

//获取calendar对象

Calendar a=Calendar.getInstance();

//年份加2年

a.add(Calendar.YEAR,2);

//日期减10天

a.add(Calendar.DAY_OF_MONTH,-10);

int y=a.get(Calendar.YEAR);

System.out.println(y);

int d=a.get(Calendar.DAY_OF_MONTH);

System.out.println(d);

}

2. get(int field):返回给定日历字段的值。@Test

public void test2() { //get

Calendar c = Calendar.getInstance();

System.out.println("今天是" + c.get(Calendar.YEAR) + "年中的第" + c.get(Calendar.DAY_OF_YEAR) + "天");

System.out.println("今天是第" + c.get(Calendar.DAY_OF_WEEK_IN_MONTH) + "周的第" + c.get(Calendar.DAY_OF_WEEK) + "天");

}

3. set(int field, int value):将给定的日历字段设置为给定值。@Test

public void test3() { //set

Calendar c = Calendar.getInstance();

System.out.println("第一周的第一天为:" + c.getFirstDayOfWeek());

System.out.println(c);

c.set(Calendar.DAY_OF_WEEK, 1);

int b = c.get(Calendar.DAY_OF_WEEK);

System.out.println(b);

c.set(2020, 2, 10);

System.out.println(d);

}

更多可以参考API文档:

java的时间日期类_Java基础学习:日期时间类相关推荐

  1. java用构造方法定义book类_JAVA基础学习之路(三)类定义及构造方法

    类的定义及使用 一,类的定义 classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intn ...

  2. java构造一个水果类_Java基础入门之Object类、匿名内部类、构造方法的继承解析...

    前言 大家好,我是Java进阶者.这篇文章我们主要介绍Java基础中的Object类.匿名内部类.构造方法的继承知识,一起来学习下吧! 一.Object类 1.Object类是所有类的父类,所有类都继 ...

  3. python如何设计工具类_Python基础之自定义工具类

    class ListHelper: @staticmethod def find_all(target, func_condition): """ 查找列表中满足条件的所 ...

  4. Java语言中提供了三个日期类_Java语言学习(5)-Java中基础封装类(日期、时间类)...

    日期和时间封装类 1. Data类 Java日期和时间采用Data类.Data类在java.util包中. Data类构造函数: 1)       Data()   采用当前时间初始化对象: 2)   ...

  5. java定义构造方法_JAVA基础学习之路(三)类定义及构造方法

    类的定义及使用 一,类的定义 classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intn ...

  6. java程序运行必须得三个io类_Java基础知识(三)

    一.hashCode 与 equals (重要) 面试官可能会问你:"你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?" 1 ...

  7. java 注解 对象_Java基础-学习使用Annotation注解对象

    Java基础-学习使用Annotation注解对象 注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某 个时刻非常方便地使用这些数据 1-1:基本语法 Java S ...

  8. java catch空指针异常处理_Java基础学习:java文件空指针异常处理

    在Java编程中,我们或多或少地会遇到一些程序异常的情况,为了不影响程序的正常执行,我们需要在程序发生异常的情况下,进行一些操作来防止造成更大的损失.例如在我们平时的除法运算中,被除数是不能为0的,如 ...

  9. java三板斧_JAVA基础学习 三板斧

    JAVA基础学习 -1 三板斧 1. 引子 最近因为工作需要,开始学习JAVA,我之前常用的编程语言是C,C#,C++,基本没有用JAVA,JAVA需要从基础开始学习了. JAVA是从C++优化而来: ...

最新文章

  1. WPF窗口长时间无人操作鼠标自动隐藏
  2. Django 07模型层—单表操作(增删改查)
  3. 210120 阶段三 fork与阻塞函数
  4. 远程终端管理和检测系统
  5. SpringBoot项目集成Mybatis Plus(一)多数据源配置
  6. 波特率、信息传输速率与带宽的关系
  7. oracle 新建命令文件命令行,Oracle11.2 命令行手工最简创建数据库的过程
  8. 两年盗取 1000 万美元的 Xbox 礼品卡,这个人竟然是“内鬼”!
  9. 14.程序员的自我修养---附录
  10. 你的灯还亮着吗阅读笔记之二
  11. windows下,本地硬盘搜索工具everything。适合windows下搜索文件名。
  12. 使用 vue 开发一个简单的滑块拖动验证码
  13. Head First Java 中文版 (第 2 版) PDF 下载
  14. 907计算机专业基础与408相比,2018计算机考研专业课精选练习题(4)
  15. 解决笔记本更换固态硬盘,将机械盘放置光驱位后,机械盘休眠导致卡顿问题
  16. matlab wmaxlev函数,CT-PET小波图像融合在精确放射治疗应用研究
  17. 软件和算法能力对惯导精度的深刻影响
  18. 中公计算机类考试题库,计算机考试题库:计算机考试模拟练习题(194)
  19. 泛微使用代码关联附件
  20. 怎么将word2016的背景色改成护眼绿?

热门文章

  1. OpenGL(预备篇3)---OpenGL编程环境配置 vs2017篇---GLM---(自己动手系列)
  2. python自动化看什么书_python自动化测试书籍
  3. 复杂网络分析 03 ER网络学习笔记
  4. Access时间日期比较查询的方法
  5. Foxmail.exe -损坏的映像 错误修复
  6. PDPS软件:碰撞检测功能介绍与使用方法
  7. 【UML】UML建模
  8. Java的访问控制修饰符有哪些?各有什么访问权限?
  9. DB2数据库配置db cfg
  10. freebsd MySQL 提权_Intel Sysret (CVE-2012-0217)内核提权漏洞