常用类-jdk8之前的日期和API
一、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的更多相关文章
- JDK8 新增的日期时间API
背景 JDK8中增加了一套全新的日期时间API,这里进行总结下,方便查询使用. 新的时间及日期API位于 java.time 包中,下面是一些关键类. Instant:代表的是时间戳. LocalDa ...
- Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate
通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...
- Java常用类(I)-时间和日期
java开发中,常涉及到时间的处理,这里就做一个总结,同样也是一个笔记. 相关类及概念 1. java.util.Date:表示特定的瞬间,精确到毫秒.由于API 不易于实现国际化,日期和时间字段之间 ...
- JDK8中新日期时间API
它们面临的问题是:可变性:像日期和时间这样的类应该是不可变的.偏移性:Date中的年份是从1900开始的,而月份都从0开始.格式化:格式化只对Date有用,Calendar则不行.此外,它们也不是线程 ...
- Java常用类之时间类
JDK8之前日期时间API 1. java.lang.System类 2. java.util.Date类 3. java.text.SimpleDateFormat类 4. java.util.Ca ...
- Java 常用类-程序员头大的日期时间API
第二节.日期时间API 一.JDK8之前日期时间API 1.1 java.lang.System类 System类提供的public static long currentTimeMillis()用来 ...
- java 数据结构(三):java常用类 三 日期时间API
JDK 8之前日期时间API 1.获取系统当前时间:System类中的currentTimeMillis()long time = System.currentTimeMillis();//返回当前时 ...
- Java(三)常用类
@ 目录 Java常用类 一.字符串相关的类 1.String类 2.StringBuffer类 3.StringBuilder类 二.JDK8以前的日期时间API 1.java.lang.Syste ...
- Java常用类学习笔记总结
Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...
随机推荐
- Bugku CTF练习题---MISC---贝斯手
Bugku CTF练习题---MISC---贝斯手 flag:flag{this_is_md5_and_base58} 解题步骤: 1.观察题目,下载附件 2.下载后进行解压,得到了一张图片.一个压缩 ...
- MeteoInfo-Java解析与绘图教程(八)_java解析卫星FY-4A一级产品文件(HDF举例)
MeteoInfo-Java解析与绘图教程(八)_java解析卫星一级产品文件(HDF举例) 最近解析卫星数据遇到了一级产品,它的解析方式与之前文章说的有些不同,特此补充一下 卫星的一级产品,里面是没 ...
- 自己的~/.vimrc
" 语法高亮syntax on " 搜索高亮set hlsearch " 显示行号set number" let mapleader="," ...
- Python 函数进阶-递归函数
递归函数 什么是递归函数 如果一个函数,可以自己调用自己,那么这个函数就是一个递归函数. 递归,递就是去,归就是回,递归就是一去一回的过程. 递归函数的条件 一般来说,递归需要边界条件,整个递归的结构 ...
- java、selenium、图片滑块验证,底部附本地可测试代码
准备 本地Chrome版本对应WebDriver驱动:http://chromedriver.storage.googleapis.com/index.html maven包 <!-- sele ...
- 645. Set Mismatch - LeetCode
Question 645. Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数 ...
- vue ui 创建vue项目 没反应的解决办法 2021
1.升级vue 脚手架 即可 2.再 vue ui 创建项目 cnpm i -g @vue/cli
- 03-数据结构(C语言版)
Day01 笔记 1 数据结构基本理论 1.1 算法五个特性: 1.1.1 输入.输出.有穷.确定.可行 1.2 数据结构分类 1.2.1 逻辑结构:集合.线性.树形.图形 1.2.2 物理结构:顺序 ...
- SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
先上代码: declare @tb table (name varchar(10),sex int) declare @tb2 table (name varchar(10),age int) ins ...
- vue大型电商项目尚品汇(前台篇)day05终结篇
前台部分到此结束,一路走来还挺怀念,今天主要是对整个项目的完成做一个最后的收尾工作,对于功能上的需求没有什么了,主要就是项目上线的一些注意事项. 一.个人中心二级路由 当我们点击查看订单应该跳转到个人 ...