一、System静态方法

点击查看代码
package com.Tang.StringDay01;

import org.junit.Test;

public class DateTimeTest {
/*
System类中的currentTimeMillis()方法
*/
@Test
public void test3(){
long time = System.currentTimeMillis();
//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
//称为时间戳
System.out.println(time);
}
}

代码运行结果图

二、Date类

点击查看代码
 /*
java.tuil.Date类
1.两个构造器的使用
Date():创建了一个对应当前时间的Date对象
创建指定毫秒数的Date对象
2.两个方法的使用
toString():显示当前的年、月、日、时、分、秒
getTime():获取当前date对象对应的毫秒数,(时间戳)
3.java.sql.Date对应着数据库中的日期类型的变量
*/
@Test
public void test(){
//构造器一:Date():创建了一个对应当前时间的Date对象
Date date1 = new Date();
System.out.println(date1.toString());
System.out.println(date1.getTime());//1655192749803
System.out.println("=====================");
//构造器二:创建指定毫秒数的Date对象
Date date = new Date(1655192749803L);
System.out.println(date);
System.out.println("=====================");
//创建Java.sql.Date对象
java.sql.Date date2 = new java.sql.Date(1655192749803L);
System.out.println(date2);
System.out.println("=====================");
//如何将Java.util.Date对象转换为Java.sql.Date对象
//情况一:多态
Date date3 = new java.sql.Date(1655192749803L);
java.sql.Date date4 = (java.sql.Date)date3;
//情况二:
Date date5 = new Date();
java.sql.Date date6 = new java.sql.Date(date5.getTime());
}

运行结果图

三、Calendar类

1.实例化

方式一:创建其子类(GregorianCalendar)的对象

方式二:调用其静态方法getInstance()

点击查看代码
 @Test
public void test(){
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass());//查看对象是由哪个类造的
//常用方法
//get()
int days = calendar.get(Calendar.DAY_OF_MONTH);//获取今天是这个月的第几天
System.out.println(days);
int days1 = calendar.get(Calendar.DAY_OF_YEAR);//获取今天是这一年的第几天
System.out.println(days1);
//set()
System.out.println("=============");
calendar.set(Calendar.DAY_OF_MONTH,22);
days = calendar.get(Calendar.DAY_OF_MONTH);//获取设置的日期是这个月的第几天
System.out.println(days);
//add()
System.out.println("=============");
calendar.add(Calendar.DAY_OF_MONTH,3);//想要再此日期上减去3天只需要写成-3即可
days = calendar.get(Calendar.DAY_OF_MONTH);//获取当前日期是这个月的第几天,然后在此基础上加上3天
System.out.println(days);
//getTime():日历类---->Date
System.out.println("=============");
Date date = calendar.getTime();
System.out.println(date);
//setTime():Date--->日期类
System.out.println("=============");
Date date1 = new Date();//获取当前Date
calendar.setTime(date1);//将Date转化为日期类
days = calendar.get(Calendar.DAY_OF_YEAR);//获取该日期是这一年的第几天
System.out.println(days); }

运行结果图

注意事项:

获取月份时:一月是0,二月是1,依次类推12月是11

获取星期时:周日是1,周一是2,依次类推周六是7

四、SimpleDateFormat类

点击查看代码
    /*
SimpleDateFormat对日期Date类的格式化和解析
1.两个操作
1.1格式化:日期--->字符串
1.2解析:格式化的逆过程,字符串--->日期
*/
@Test
public void test4() throws ParseException {
//实例化SimpleDateFormat:使用默认的构造器
SimpleDateFormat sdf = new SimpleDateFormat();
//格式化:日期--->字符串
Date date = new Date();
System.out.println(date);
String format = sdf.format(date);
System.out.println(format);
//解析:格式化的逆过程,字符串--->日期
String str = "2022/6/15 下午4:10";//默认格式
Date date1 = sdf.parse(str);
System.out.println(date1);
System.out.println("=================");
//格式化与解析方式二:按照指定的方式进行格式化和解析:调用代参的构造器
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format1 = sdf1.format(date);
System.out.println(format1);
//解析
Date parse = sdf1.parse("2022-06-15 04:20:53");//必须按照给定的格式,否则会抛异常
System.out.println(parse);
}

运行结果图



1.练习题:字符串"2022-6-15",转换为Java.sql.Date

点击查看代码
    @Test
public void test5() throws ParseException {
String birth = "2022-6-15";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date parse = sdf1.parse(birth);
java.sql.Date date = new java.sql.Date(parse.getTime());
System.out.println(date);
}

运行结果图



2.练习题:三天打鱼两天晒网,输入两个日期,从第一个日期开始,到第二个日期是请问这天实在打鱼还是在晒网

若在测试单元@Test中无法使用Scanner输入可以参考以下解决方法;

(1)打开idea------找到help-------点击Edit Custom VM Options

(2)在最后添加:-Deditable.java.test.console=true

(3)保存,重新打开idea。

点击查看代码
 @Test
public void test6() throws ParseException {
//总天数的计算
//这里在Test测试单元里无法使用Scanner,也就是无法输入日期可参考上图解决方法
Scanner input = new Scanner(System.in);
String s = input.nextLine();
String s1 = input.nextLine(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(s);
Date date2 = sdf1.parse(s1);
int totalDay = (int) ((date2.getTime() -date1.getTime()) /(1000 * 60 * 60 *24) + 1);
System.out.println("从1999-04-06到2022-06-15一共有"+ totalDay+"天");
if(totalDay % 5 == 1 || totalDay % 5 == 2 || totalDay % 5 == 3)
System.out.println("这一天在打鱼");
else
System.out.println("这一天在晒网");
}

运行结果图

常用类-jdk8之前的日期和API的更多相关文章

  1. JDK8 新增的日期时间API

    背景 JDK8中增加了一套全新的日期时间API,这里进行总结下,方便查询使用. 新的时间及日期API位于 java.time 包中,下面是一些关键类. Instant:代表的是时间戳. LocalDa ...

  2. Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate

    通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...

  3. Java常用类(I)-时间和日期

    java开发中,常涉及到时间的处理,这里就做一个总结,同样也是一个笔记. 相关类及概念 1. java.util.Date:表示特定的瞬间,精确到毫秒.由于API 不易于实现国际化,日期和时间字段之间 ...

  4. JDK8中新日期时间API

    它们面临的问题是:可变性:像日期和时间这样的类应该是不可变的.偏移性:Date中的年份是从1900开始的,而月份都从0开始.格式化:格式化只对Date有用,Calendar则不行.此外,它们也不是线程 ...

  5. Java常用类之时间类

    JDK8之前日期时间API 1. java.lang.System类 2. java.util.Date类 3. java.text.SimpleDateFormat类 4. java.util.Ca ...

  6. Java 常用类-程序员头大的日期时间API

    第二节.日期时间API 一.JDK8之前日期时间API 1.1 java.lang.System类 System类提供的public static long currentTimeMillis()用来 ...

  7. java 数据结构(三):java常用类 三 日期时间API

    JDK 8之前日期时间API 1.获取系统当前时间:System类中的currentTimeMillis()long time = System.currentTimeMillis();//返回当前时 ...

  8. Java(三)常用类

    @ 目录 Java常用类 一.字符串相关的类 1.String类 2.StringBuffer类 3.StringBuilder类 二.JDK8以前的日期时间API 1.java.lang.Syste ...

  9. Java常用类学习笔记总结

    Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...

随机推荐

  1. Spring 源码(6)BeanFactoryPostProcessor怎么执行的?

    上一篇文章 https://www.cnblogs.com/redwinter/p/16167214.html 解读了如何进行自定义属性值的编辑器的解析器,并且还介绍了BeanFactory的准备过程 ...

  2. 漏洞复现:MS12-020 远程桌面协议RDP远程代码执行漏洞

    漏洞复现:MS12-020 远程桌面协议RDP远程代码执行漏洞 攻击机:Kali2019 靶机:Win7 64位 解题步骤: 1.打开Kali2019和Win7 64位 ,确定IP地址是多少 2.确定 ...

  3. 【Vagrant】启动安装Homestead卡在 SSH auth method: private key

    注意:通过查找资料发现,导致这个问题的原因有很多,我的这个情况只能是一个参考. 问题描述 今天在使用虚拟机的时候,由于存放虚拟机的虚拟磁盘(vmdk文件)的逻辑分区容量不足(可用容量为0了).然后在使 ...

  4. Linux进程总结

    一个执着于技术的公众号 进程 进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.它的执行需要系统分配资源创建实体之后,才能进行.举个例子: ...

  5. 文本框字符限制、focus光标定位

    一.为一个元素的所有子元素设置统一样式:.className * { color: #6666 } 二.正则表达式: 1.去除所有HTML标签只保留文字: /<\/?.+?\/?>/2.去 ...

  6. 版本控制之git

    1.Git的介绍 Git 是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发.Git ...

  7. k8s系列--node(k8s节点介绍,新增节点,移除节点)

    一.简介 Node是Pod真正运行的主机,可以是物理机也可以是虚拟机. Node本质上不是Kubernetes来创建的, Kubernetes只是管理Node上的资源. 为了管理Pod,每个Node节 ...

  8. 每天一个 HTTP 状态码 202

    202 Accepted 202 Accepted 表示服务器已经接受了这个请求,但是还不确定这个请求是否能够成功地被处理完.该请求最终可能会或可能不会被执行,并且在处理发生时可能会被拒绝,这是不确定 ...

  9. .net6.0 中一个接口多个实现的服务注册与注入

    1.现有一个数据库操作接口 如下   它有两个数据操作实现 Sqlserver 和MySql的数据库操作实现类 现在我们需要 将这个两个类 注册到MVC中 注意这里注册的服务类型都是 IDataBas ...

  10. 解锁!玩转 HelloGitHub 的新姿势

    本文不会涉及太多技术细节和源码,请放心食用 大家好,我是 HelloGitHub 的老荀,好久不见啊! 我在完成 HelloZooKeeper 系列之后,就很少"露面了".但是我对 ...