Java学习

  • Date类
    • 毫秒值的概念与作用
    • 构造方法
      • 无参构造
      • 有参构造
    • 成员方法getTime()
    • currentTimeMillis方法
  • DateFormat和SimpleDateFormat类
    • 构造方法
    • 成员方法
    • 使用这两个成员方法及其细节
    • 练习
  • Calendar日历类
    • 常用成员方法
      • get
      • set
      • add
      • geiTime

Date类

java.util.Date:表示日期和时间的类,Date 表示特定的瞬间,精确到毫秒。

毫秒值的概念与作用

毫秒:千分之一秒,1000毫秒=1。
秒特定的瞬间:一个时间点,一刹那时间
例如:
2088-08-08 09:55:33:333瞬间
2088-08-0809:55:33:334瞬间
2088-08-08 09:55:33:335瞬间

毫秒值的作用:可以对时间和日期进行计算。
2022-01-01到2088-01-01中间一共有多少天?
可以日期转换为毫秒进行计算,计算完毕,在把毫秒转换为日期。

把日期转换为毫秒:
当前的日期:2022-08-28
时间原点(0毫秒):1970年1月1日00:00:00(英国格林威治)
就是计算当前日期到时间原点之间一共经历了多少毫秒(374267540068L)
注意:
中国属于东八区,会把时间增加8个小时1970年1月1日08:00:00

把毫秒转换为日期:
1天=24x60x60=86400秒=86400x1000=86400000毫秒

构造方法

学习类都是一个过程,先学习这个类的构造方法;有了构造方法后,就可以创建对象,然后通过对象调用它里面的成员方法。

无参构造

public static void main(String[] args) {//Data的空参数构造方法-Data()获取当前系统的时间(精确到毫秒的系统当前时间)Date date = new Date();//java.util.Date类的toString()方法已经被重写了//所以直接输出对象,不是这个对象的内存地址,而是一个日期字符串System.out.println(date); //输出:Sun Aug 28 21:18:47 CST 2022}

有参构造

public static void main(String[] args) {// Date类的带参数构造方法//Date(long date) :传递毫秒值转换为Date日期Date date = new Date(0L); //把参数里面的毫秒转成对应的日期System.out.println(date); //输出:Thu Jan 01 08:00:00 CST 1970Date date1 = new Date(1620543792746L); //把参数里面的毫秒转成对应的日期System.out.println(date1); //输出:Sun May 09 15:03:12 CST 2021}

成员方法getTime()

public static void main(String[] args) {// Long getTime()把日期转换为毫秒值(相当于System.currentTimeMillis()方法)// 返回自1970年 1月一日 00:00:00 到当前系统时间一共经历了多少毫秒Date date = new Date();long time = date.getTime();System.out.println(time); //1661693372684}

currentTimeMillis方法

此方法是System类的一个方法,作用和getTime()一样,返回自1970年 1月一日 00:00:00
到当前系统时间一共经历了多少毫秒。

public static void main(String[] args) {Long TimeMillis = System.currentTimeMillis();System.out.println(TimeMillis); //输出:1661693849165}

那么这个方法可以用来干什么呢?
看的出来,经过测试,下列代码空循环一亿次,用了3毫秒

public static void main(String[] args) {//统计一个方法的耗时//在调用目标方法之前记录一个毫秒数Long TimeMillis = System.currentTimeMillis();//这里调用方法print();//在执行完目标方法之后记录一个毫秒数Long end = System.currentTimeMillis();System.out.println("耗费时长:"+(end-TimeMillis)+"毫秒"); //输出:耗费时长:3毫秒}public static void print(){for (int i = 0; i < 100000000; i++) {}}

DateFormat和SimpleDateFormat类

DateFormat类和它的子类SimpleDateFormat,后者是前者的子类,所以它有父类的format和parse方法。

java.text.DateFormat:是日期/时间格式化子类的抽象类。
作用: 格式化(也就是日期->文本) 、解析(文本->日期)

构造方法

DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类
java.text.SimpleDateformat extends DateFormat
构造方法:
SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
参数: String pattern:传递指定的模式

模式:区分大小写

y
M
d
H
m
s

写对应的模式,会把模式替换为对应的日期和时间 “yyyy-MM-dd HH:mm:ss”
注意:
模式中的字母不能更改,连接模式的符号可以改变"yyyy年MM月dd日 HH时mm分ss秒"

成员方法

String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source)把符合模式的字符串,解析为Date日期

使用这两个成员方法及其细节

public static void main(String[] args) throws ParseException {demo01();demo02(); //调用的方法也会出红线,也要光标放红线上alt+回车选择第一个}private static void demo01() {//使用DateFormat类中的format方法,把日期格式转化为文本//1.创建SimpleDateFormat对象,构造方法中传递指定的模式SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式//2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式转换为符合模式的字符串(文本)//String format(Date date) 按照指定模式,把Date日期,格式化为符合模式的字符串Date date =new Date(); //获取当前系统时间String format = sdf.format(date);System.out.println(date); //Sun May 09 16:09:50 CST 2021System.out.println(format); //2021年09月09日 16时09分50秒}/*使用DateFormat类中的parse方法,把文本解析成为Date日期1.创建SimpleDateFormat对象,构造方法中传递指定的模式2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期注意:public Date parse(String source)throws ParsejExceptionparse方法声明一个异常叫ParseException如果字符串和构造方法的模式不一样,那么程序就会抛出异常调用一个抛出异常的方法,就必须的处理这个异常要么throws继续抛出这个异常,要么try catch自己处理出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个这就是在我的方法声明这个异常,我不处理,我声明一下程序没有问题,正常执行出现问题,打印异常,并终止程序*/private static void demo02() throws ParseException {//使用DateFormat类中的parse方法,把文本解析成为Date日期//1.创建SimpleDateFormat对象,构造方法中传递指定的模式SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式//Date parse(String source) 把符合,模式的字符串,解析为Date日期//2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期/*出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个这就是在我的方法声明这个异常,我不处理,我声明一下*/
//        把字符串类型按照传入构造模式解析成为Date类型,传入指定模式和字符串要一样,字符串这边少个秒就报错Date parse = sdf.parse("2021年09月09日 16时09分50秒");System.out.println(parse);//Sat Jan 09 16:09:50 CST 2021}

练习

public static void main(String[] args) throws ParseException {Scanner scanner = new Scanner(System.in); // 输入:2001-07-02 System.out.println("请输入出生日期(格式为yyyy-mm-dd):");String next = scanner.next(); //拿到字符串出生日期SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");Date parse = simpleDateFormat.parse(next); //把字符串出生日期解析成为DAte格式long ee = parse.getTime(); // 把Date格式的出生日期转换为毫秒值Date aa = new Date(); //获取当前日期毫秒值long hh = aa.getTime(); //把当前日期毫秒值转换成为毫秒值
//        Date aa = new Date().getTime(); 一步到位 匿名long dd = hh-ee; //差值long jj = dd/1000/60/60/24; //把毫秒值转换成为天System.out.println(jj); // 输出:7908。 代表着 2001-07-02 到今天已经过了7908天
//        System.out.println(dd/1000/60/60/24); //一步到位}

Calendar日历类


常用成员方法

get

set

add

geiTime

【JAVA进阶篇】时间与日期相关类相关推荐

  1. android 用年月日初始化date_Android随笔之——Android时间、日期相关类和方法

    今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...

  2. Java进阶,时间与日期,包装类,正则表达式

    Java时间与日期,包装类,正则表达式 一.时间与日期 1.Date Date类概述 Date类代表当前所在系统的日期时间信息. Date的构造器 名称 说明 public Date() 创建一个Da ...

  3. android 日期时间类,Android 时间与日期操作类

    获取本地日期与时间 public String getCalendar() { @SuppressLint("SimpleDateFormat") SimpleDateFormat ...

  4. java学习--基础知识进阶第五天--API、 Object类 System类、日期相关类、包装类正则表达式...

    今日内容介绍 u  Object类 & System类 u  日期相关类 u  包装类&正则表达式 第1章 Object类 & System类 1.1 Object类 1.1. ...

  5. 日期的包装 java,Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类...

    Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯. 2.面向对象的出现,将复杂的事情简单化. 3.面向对象的出现,将之前过 ...

  6. Java中的时间和日期(下)

    转载请注明出处:http://blog.csdn.net/wl9739/article/details/51882913 在上篇文章Java中的时间和日期(上)里面,简单介绍了Java中的Date类, ...

  7. Java中的时间和日期(上)

    自从JDK 1.0开始,Java就提供了Date来处理时间和日期,作为老古董自然有很多东西是过时的.然后出现了Calendar来解决了很多问题,但是Calendar使用比较复杂,并且有些反人类的地方. ...

  8. java进阶第二讲-数组、String类

    java进阶第二讲-数组.String类 1 回顾一下Object Object中的方法:public native int hashCode();带有native关键字的方法调用的是底层C++的dl ...

  9. Java----常用类:日期相关类、数学运算相关类

    常用类 日期相关类 Date类     日期函数 //2012-12-12 00:00:00- 1970-01-01 00:00:00 = 毫秒差: Date date = new pate();   ...

最新文章

  1. lwip iperf 方法进行性能测试
  2. QGraphicsItem获取不到鼠标事件
  3. rabbitMQ消息队列 – 面板介绍及简单demo
  4. 《从0到1学习Flink》—— Apache Flink 介绍
  5. Redis之压缩列表ziplist
  6. 详解 Qt 串口通信程序全程图文 (5)
  7. 上岸 | 震惊!211高校硕士毕业后,我在非洲当酋长!
  8. 嵌入式C语言编码规范
  9. 统计学权威盘点过去50年最重要的统计学思想,因果推理、bootstrap等上榜
  10. 研究生研一学习机器学习ML、深度学习DL的规划
  11. 伴娘礼服上的年华(五)
  12. VUE提示Gradient has outdated direction syntax
  13. AI改写人类起源:黑猩猩并不是我们的祖先!
  14. Pip修改阿里云镜像
  15. vue+vant图片上传压缩图片大小
  16. windows查看端口占用情况
  17. psv文件转换为csv文件
  18. ZLG CANalyst驱动安装报错
  19. Matlab中exp函数的用法
  20. 国芯方案——胎压计芯片方案SIC8632

热门文章

  1. 《把时间当作朋友》---- 读书笔记
  2. JPA 链表查询,子查询操作
  3. Django-- (三) Django数据库操作
  4. 数据仓库 python_python新手如何通过即时转换彻底改变收藏的数据仓库
  5. 内心的强大,永远胜过外表的浮华
  6. 学习笔记之Markdown(一)
  7. 计算机打开共享网络连接打印机共享打印机,两台电脑如何共享打印机 多台电脑共享一台打印机设置方法【详细教程】...
  8. chrome的资源文件pak的解压和压缩
  9. Java鱼雷apex大套件,SRAM APEX 1x11S公路车油碟单盘套件使用体验
  10. 生而不凡的EOS区块链技术