一、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. 面试突击42:synchronized和ReentrantLock有什么区别?

    在 Java 中,常用的锁有两种:synchronized(内置锁)和 ReentrantLock(可重入锁),二者的功效都是相同得,但又有很多不同点,所以我们今天就来聊聊. 区别1:用法不同 syn ...

  2. 宝藏发现之API接口高效协作神器Apifox

    概述 背景 Apifox官方地址 https://www.apifox.cn/ 前面文章我们已经围绕微服务展开,缺少一个关键前置流程,那就是API接口设计,而在API接口设计开始前本篇先推荐一个非常好 ...

  3. java基础4.18

    1.java的"一次编写,处处运行"如何实现?: 答:java之所有能实现一次编译,到处运行,是因为java在每个系统平台上都有java虚拟机(jvm),java编译的中间文件cl ...

  4. 深入了解tomcat中servlet的创建方式实现

    Tomcat如何创建Servlet? A.先到缓存中寻找有没有这个对象(Servlet是单实例的,只会创建一次) 如果没有: 1.通过反射去创建相应的对象(执行构造方法) 2.tomcat会把对象存放 ...

  5. PHP代码审计之SQL注入

    代码审计之SQL注入 SQL注入攻击(SQLInjection),是攻击者在表单中提交精心构造的sql语句,改变原来的sql语句,如果web程序没有对提交的数据经过检查,那么就会造成sql注入攻击. ...

  6. 解读先电2.4版 iaas-install-mysql.sh 脚本

    #!/bin/bash #声明解释器路径 source /etc/xiandian/openrc.sh #生效环境变量 ping $HOST_IP -c 4 >> /dev/null 2& ...

  7. 解构HE2E中的Kubernetes技术应用

    摘要:我们从Kubernetes技术应用的角度解构华为云DevCloud HE2E DevOps实践. 本文分享自华为云社区<解构HE2E中的Kubernetes技术应用>,作者: 敏捷小 ...

  8. uniapp中利用uni.$emit()和uni.$on()进行页面和tabbar页面传值(页面通讯)

    tabbar页面 <script> export default { data() { return { list: [] , }; }, onLoad() { // 监听事件 uni.$ ...

  9. spring boot redis 写入异常

    redis 的 key value 使用 json 序列化.反序列化时,写入的 bean 不能是 final 类型的类,否则无法解析

  10. CentOS6.x静默安装Oracle12c

    一.准备 1.1 安装环境 系统要求 内存 > 2G 安装目录空间 > 6.5G /tmp目录空间 > 1G 操作系统 cat /etc/redhat-release 用rpm命令确 ...