Date时间API
JDK8之前时间API
@Test
public void test1(){
System.out.println(System.currentTimeMillis()); //构造器一: Date(): 创建一个对应当前时间的Date对象
Date date1 = new Date();
System.out.println(date1.toString());//Sat Feb 16 16:35:31 GMT+08:00 2019
System.out.println(date1.getTime());//155030620414
//构造器二: 创建指定毫秒数的Date对象
Date date2 = new Date(15503962041L);
System.out.println(date2.toString());
//创建java.sgL.Date对象
java.sql.Date date3 = new java.sql.Date(35235325345L);
System.out.println(date3);//1971-02-13 //如何将java.util.Date对象转换为java.sgl.Date对象
//情况一:
Date date4 = new java.sql.Date(2343243242323L);
java.sql.Date date5 = (java.sql.Date) date4;
//情况二:
Date date6 = new Date();
java.sql.Date date7 = new java.sql.Date(date6.getTime());
}
@Test
public void test2() throws ParseException {
//实例化simpLeDateFormat
SimpleDateFormat sdf = new SimpleDateFormat();
//格式化: 日期 --->字符串
Date date = new Date();
System.out.println(date);//Sat Jan 14 22:21:56 CST 2023
String format = sdf.format(date);
System.out.println(format);//23-1-14 下午10:21 //解析:格式化的逆过程,字串 ---> 日期
String str ="19-12-18 上午11:43";
Date date1 = null;
date1 = sdf.parse(str);
System.out.println(date1);//Wed Dec 18 11:43:00 CST 2019 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date2 = new Date();
String format1 = sdf1.format(date2);
System.out.println(format1);//2023-01-14 10:27:40
//解析: 要求字符串必须是符SimpleDateFormat 识别的格式(通过构造器参数体现),否则,抛异常
Date date3 = sdf1.parse("2023-01-14 10:27:40");
System.out.println(date3);//Sat Jan 14 10:27:40 CST 2023
}
@Test
public void test3(){
//1.实例化
// 方式一:创建其子类 (GregorianCalendar) 的对象
// 方式二: 调用其静态方法getInstance()
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass());//class java.util.GregorianCalendar
//2.常用方法
// get()
int days = calendar.get(Calendar.DAY_OF_MONTH);//获取当天为当月的第几天
System.out.println(days);//14
//set()
calendar.set(Calendar.DAY_OF_MONTH,22);//设置当天为当月的第几天
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);//22
//add()
calendar.add(Calendar .DAY_OF_MONTH, -3);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);//19
}
@Test
public void test4(){
//now(): 获当前的日期、时间、日期+时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);//2023-01-14
System.out.println(localTime);//23:05:12.191
System.out.println(localDateTime);//2023-01-14T23:05:12.191
//of(): 设置指定的年、月、日、时、分、秒。没有偏移量
LocalDateTime localDateTime1 = LocalDateTime.of(2023,1,14,23,4,20);
System.out.println(localDateTime1);//2023-01-14T23:04:20
//getxxx()
System.out.println(localDateTime.getDayOfMonth());//14
System.out.println(localDateTime.getDayOfWeek());//SATURDAY
System.out.println(localDateTime.getMonth());//JANUARY
System.out.println(localDateTime.getMonthValue());//1
System.out.println(localDateTime.getMinute());//7
}
瞬时:Instant(类似于java.util.Date类)
部分方法:
@Test
public void test5(){
//now(): 获取本初子午线对应的标准时间
Instant instant = Instant.now();
System.out.println(instant);//2023-01-14T15:22:36.121Z
//添加时间的偏移量
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);//2023-01-14T23:22:36.121+08:00
//toEpochMiLLi(): 获取自1970年1月1 日分秒 (UTC)开始的毫秒数-> Date类的getTime()
long milli = instant.toEpochMilli();
System.out.println(milli);//1673709756121
//ofEpochMilli():通过给定的毫秒数,获取Instant实例 -->Date(Long milLis)
Instant instant1 = Instant.ofEpochMilli(1673709756121L);
System.out.println(instant1);//2023-01-14T15:22:36.121Z
}
格式化与解析日期或时间 java.time.format.DateTimeFormatter 类
@Test
public void test6(){
//重点:方式三:自定义的格式。如: ofPattern("yyyy-MM-dd hh:mm: ss")
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化
String str4 = formatter3.format(LocalDateTime.now( ));
System.out.println(str4);//2023-01-14 11:44:15
//解析
TemporalAccessor accessor = formatter3.parse("2023-01-14 11:44:15");
System.out.println(accessor);//{HourOfAmPm=11, MinuteOfHour=44, SecondOfMinute=15, NanoOfSecond=0, MilliOfSecond=0, MicroOfSecond=0},ISO resolved to 2023-01-14
}
Date时间API的更多相关文章
- java.util.Date和jdk1.8新时间API比拼
旧的时间和日期的API的缺陷 Java 的 java.util.Date 和 java.util.Calendar 类易用性差,不支持时区,而且都不是线程安全的. Date如果不格式化,打印出的日期可 ...
- Java日期时间API系列13-----Jdk8中java.time包中的新的日期时间API类,时间类转换,Date转LocalDateTime,LocalDateTime转Date等
从前面的系列博客中可以看出Jdk8中java.time包中的新的日期时间API类设计的很好,但Date由于使用仍非常广泛,这就涉及到Date转LocalDateTime,LocalDateTime转D ...
- [转载]Java 8 日期&时间 API
Java 8 日期和时间 声明 本文转自http://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant,以mark ...
- Java8 时间 API
前言 Java8 中最为人津津乐道的新改变恐怕当属函数式 API 的加入.但实际上,Java8 所加入的新功能远不止这个. 本文将基于<Java SE8 for the Really Impat ...
- 计算机程序的思维逻辑 (95) - Java 8的日期和时间API
本节继续探讨Java 8的新特性,主要是介绍Java 8对日期和时间API的增强,关于日期和时间,我们在之前已经介绍过两节了,32节介绍了Java 1.8以前的日期和时间API,主要的类是Date和 ...
- Java 8 日期时间 API
转自:https://www.runoob.com/java/java8-datetime-api.html Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与 ...
- JDK8 新增的日期时间API
背景 JDK8中增加了一套全新的日期时间API,这里进行总结下,方便查询使用. 新的时间及日期API位于 java.time 包中,下面是一些关键类. Instant:代表的是时间戳. LocalDa ...
- Java 8 (二) 新的时间API
新的时间API 一)时间线 Instant对象:表示时间轴上的一个点,原点为1970-1-1的午夜. Duration对象:表示一段时间. 注意Instant和Duration类都是final. 二) ...
- Java编程的逻辑 (95) - Java 8的日期和时间API
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- Java 8 新特性-菜鸟教程 (8) -Java 8 日期时间 API
Java 8 日期时间 API Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理. 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: ...
随机推荐
- JavaScript:代码细节和良好编码习惯
这些细节,与语法无关,仅仅是编写代码时需要注意的最最基本的细节和一些良好编码习惯. 注释代码 注释代码分为单行注释和多行注释,如下所示: 严格区分大小写 JS的代码时严格区分大小写的,变量a和A是不同 ...
- 使用time.Time数据类型获取时间报错
报错类型:Error 1292: Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1 在添加用户到数据库时, ...
- UVA12412 A Typical Homework (a.k.a Shi Xiong Bang Bang Mang) 代码
#include <bits/stdc++.h> #define int long long #define judge(a,func) case a:func();break; usin ...
- ng + zorro angular表格横纵向合并,横向目前是手动,纵向是自动合并,微调后可适配三大框架使用
表格横纵向合并,可以看一下代码编写之前和之后的样式,先上图~~ 表格页面文件.html <h1>正常表格</h1> <nz-table #colSpanTable [nz ...
- 宇宙无敌搞笑轻松弄懂java动态代理
https://www.cnblogs.com/ferryman/p/13170057.html jdk动态代理和cglib动态代理区别 https://blog.csdn.net/shallynev ...
- Blazor入门100天 : 身份验证和授权 (2) - 角色/组件/特性/过程逻辑
目录 建立默认带身份验证 Blazor 程序 `角色/组件/特性/过程逻辑 DB 改 Sqlite 将自定义字段添加到用户表 脚手架拉取IDS文件,本地化资源 freesql 生成实体类,freesq ...
- 【分析笔记】Linux gpio_wdt.c 看门狗设备驱动源码分析
基本原理 该看门狗的设备驱动实现原理很简单,比较主要的有两点: 一.定时器喂狗 通过定时器根据配置文件配置的喂狗方式(如脉冲切换.电平切换),对指定的 gpio 进行脉冲切换或电平切换实现喂狗. 脉冲 ...
- vulnhub靶场之CEREAL: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:Cereal: 1,下载地址:https://download.vulnhub.com/cereal/Cereal.ova,下载后直接vbox打 ...
- 逗号(,)运算符在Javascript中
逗号运算符 逗号运算符是二元运算符,它能够先执行运算符左侧的操作数,然后再执行右侧的操作数,最后返回右侧操作数的值. 逗号表达式: 一般形式:表达式1,表达式2,表达式3,......表达式n 求解过 ...
- bat脚本登陆ftp服务器
用bat脚本登录ftp服务器,下载指定文件. 第一次脚本,有问题,你发现了么? 由于每个">>"重定向符号之前都习惯用空格(python style),导致写道ftp. ...