Java日期时间

知识扩展

什么是闰秒?
【百度百科解释】闰秒,是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的),会使世界时(民用时)和原子时之间相差超过到±0.9秒时,就把协调世界时向前拨1秒(负闰秒,最后一分钟为59秒)或向后拨1秒(正闰秒,最后一分钟为61秒); 闰秒一般加在公历年末或公历六月末。全球已经进行了27次闰秒,均为正闰秒。最近一次闰秒在北京时间2017年1月1日7时59分59秒(时钟显示07:59:60)出现。这也是本世纪的第五次闰秒。

Date类

java.lang.Date

构造方法

Date():创建当前的时间对象
Date​(long date):该参数是从 1970 年 1 月 1 日起的毫秒数。

具体方法

变量和类型 方法 描述
boolean after​(Date when) 测试此日期是否在指定日期之后
boolean before​(Date when) 测试此日期是否在指定日期之前
int compareTo​(Date anotherDate) 比较两个日期的订购
boolean equals​(Object obj) 比较两个相等的日期
static Date static Date 从 Instant对象获得 Date的实例
long getTime() 返回自此 Date对象表示的1970年1月1日00:00:00 GMT以来的毫秒数
int hashCode() 返回此对象的哈希码值
void setTime() 将此 Date对象设置为表示格林尼治标准时间1970年1月1日00:00:00之后的 time毫秒的时间点
Instant toInstant() 将此 Date对象转换为 Instant
String toString() 将此 Date对象转换为 String类型

代码示例:

import java.util.Date;
public class Test {public static void main(String[] args) {//1.创建系统当前时间Date date1 = new Date();//2.创建从 1970 年 1 月 1 日起127846184毫秒的时间Date date2 = new Date(127846184);//3.时间输出System.out.println("date1:"+date1);//date1:Wed Apr 27 14:54:03 JST 2022System.out.println("date2:"+date2.toString());//date2:Fri Jan 02 20:30:46 JST 1970//4.时间的比较date1.after(date2);//truedate1.before(date2);//falsedate1.equals(date2);//false//getTime()获取date距离 1970 年 1 月 1 日的毫秒数System.out.println(date1.getTime()==date2.getTime());//falseSystem.out.println(date1.compareTo(date2));//truedate1.clone();      }
}

SimpleDateFormat格式化日期时间

SimpleDateFormat是一个用于以区域设置敏感的方式格式化和解析日期的具体类。 它允许格式化(日期→文本),解析(文本→日期)和规范化。

SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。

时间和日期的编码化格式

import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatTest {public static void main(String[] args) {Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("G:yyyy:MM:dd,HH:mm:ss:E");System.out.println(sdf.format(date));}
}

时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:

字母 描述 示例
G 纪元标记 AD
y 四位年份 2001
M 月份 July or 07
d 一个月的日期 10
h A.M./P.M. (1~12)格式小时 12
H 一天中的小时 (0~23) 22
m 分钟数 30
s 秒数 55
S 毫秒数 234
E 星期几 Tuesday
D 一年中的日子 360
F 一个月中第几周的周几 2 (second Wed. in July)
w 一年中第几周 40
W 一个月中第几周 1
a A.M./P.M. 标记 PM
k 一天中的小时(1~24) 24
K A.M./P.M. (0~11)格式小时 10
z 时区 Eastern Standard Time
文字定界符 Delimiter
" 单引号 `

使用printf格式化日期

printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。

转 换 符 说 明 示 例
c 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007
F "年-月-日"格式 2007-10-27
D "月/日/年"格式 10/27/07
r "HH:MM:SS PM"格式(12时制) 02:25:51 下午
T "HH:MM:SS"格式(24时制) 14:28:16
R "HH:MM"格式(24时制) 14:28
import java.util.Date;
public class SimpleDateFormatTest {public static void main(String[] args) { Date date = new Date();//c的使用  System.out.printf("全部日期和时间信息:%tc%n",date);          //f的使用  System.out.printf("年-月-日格式:%tF%n",date);  //d的使用  System.out.printf("月/日/年格式:%tD%n",date);  //r的使用  System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);  //t的使用  System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);  //R的使用  System.out.printf("HH:MM格式(24时制):%tR",date);       }
}

输出结果:

全部日期和时间信息:星期一 九月 10 10:43:36 CST 2012
年-月-日格式:2012-09-10
月/日/年格式:09/10/12
HH:MM:SS PM格式(12时制):10:43:36 上午
HH:MM:SS格式(24时制):10:43:36
HH:MM格式(24时制):10:43

Java睡眠(sleep)

sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。
利用sleep方法测试时间间隔:

import java.util.Date;
public class SleepTest {public static void main(String[] args) {try {long start = System.currentTimeMillis();System.out.println("睡眠之前时间"+new Date());Thread.sleep(5*60*15);System.out.println("睡眠之后时间:" + new Date());long end = System.currentTimeMillis();System.out.println(end-start);} catch (InterruptedException e) {e.printStackTrace();}}
}

Calendar类

Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。

创建Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期
//创建指定时间对象
Calendar c1 = Calendar.getInstance();
c1.set(2021, 6 - 1, 12);

Calendar对象字段

常量 描述
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 日期
Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY 24小时制的小时
Calendar.MINUTE 分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK 星期几

Calendar类API

Java日期时间处理相关推荐

  1. java日期时间转日期_Java时间和日期指南

    java日期时间转日期 长期以来,正确处理日期,时间,时区,夏令时,and年等一直是我的烦恼. 本文并不是一个全面的指南时域,请参阅日期和时间在Java中 -更详细,但略有下降,ekhem,日期. 它 ...

  2. java8 日期api_我们多么想要新的Java日期/时间API?

    java8 日期api 当前的Java.net 民意测验问题是:" 对于用Java 8实现的JSR-310(新的日期和时间API)有多重要? "在我撰写本文时,将近150位受访者投 ...

  3. 我们多么想要新的Java日期/时间API?

    当前的Java.net 民意测验问题是:" 对于用Java 8实现的JSR-310(新的日期和时间API)有多重要? "在我撰写本文时,将近150位受访者投了赞成票,绝大多数人回答 ...

  4. java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间

    正文之前 终于好像仿佛看完了菜鸟教程的Java课程,感觉自己收获颇丰!很好,Java看完之后正愁如何开始进阶呢!结果发现菜鸟还准备了Java实例这种好东西!简直就是教程界的良心啊 !!!没事,先写写笔 ...

  5. java datetime 转换_如何实现Java日期时间格式转换

    Java日期时间以及日期相互转换 Java日期时间,以及相互转化,供大家参考,具体内容如下 package com.study.string; import java.text.ParseExcept ...

  6. 【零基础学Java】—Java 日期时间(三十二)

    [零基础学Java]-Java 日期时间(三十二) DateFormat 是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间. 日期/时间格式化子类(如SimpleDateFor ...

  7. 【零基础学Java】—Java 日期时间(三十一)

    [零基础学Java]-Java 日期时间(三十一) java.util.Date:表示日期和时间的类 类Date表示特定的瞬间,精确到毫秒 毫秒:千分之一秒,1000毫秒=1秒 特定的时间:一个时间点 ...

  8. java 日期时间工具_Java日期时间类工具

    Java日期时间类工具 Java日期时间类 Date类 Java提供的Date类和Calendar类用于处理日期和时间的类,包括创建日期,时间对象,获取系统当前日期,时间 等操作.但Date类无法实现 ...

  9. java awt android_Android开发基础之Java 日期时间

    Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date ...

  10. 一文告诉你Java日期时间API到底有多烂

    前言 你好,我是A哥(YourBatman). 好看的代码,千篇一律!难看的代码,卧槽卧槽~其实没有什么代码是"史上最烂"的,要有也只有"史上更烂". 日期是商 ...

最新文章

  1. mysql 逻辑架构
  2. Oracle Performance Active Session History ASH图
  3. php下dat函数e,PHP 常用函数记录 一
  4. 【机器学习】扎实入门机器学习的路子
  5. Uipath 学习栏目基础教学:8、uipath 屏幕抓取获取文本
  6. u-net语义分割_使用U-Net的语义分割
  7. MySQL查看数据库系统正在运行的进程
  8. jQuery函数的等价原生函数代码示例
  9. 兼容各种浏览器的自动左右滚动兼左右点击滚动代码
  10. 数据结构C语言实现—队列操作
  11. 后台窗口截图_万人拥捧的截图软件来啦!让你的工作效率提升不止一倍!
  12. Java Web:使用jstl标签
  13. 《Using OpenRefine》翻译~14
  14. matlab如何计算方差分析,matlab-方差分析.ppt
  15. psn账号修改地址可以转服务器,PSN换卡换服换账户教程
  16. 宝塔面板php无法安装,宝塔面板php无法安装怎么办
  17. dedecms调用友情链接代码
  18. 中证500-小盘股预警2015.4.2
  19. 怎么批量提取网站中的内容-免费网页数据提取软件
  20. 小心肝队-冲刺日志(第十天)

热门文章

  1. 五天入门SpringBoot(1)—Java SpringBoot 基础--helloworld,15分钟超快速入门
  2. 一文章让你彻底了解ChatGPT
  3. VC GDI+ 字体的特效
  4. web应用开发的主流技术有哪些
  5. 虚拟DOM和真实DOM的区别
  6. vscode+anaconda的python环境配置
  7. antv G6绘制流程图
  8. STC15F104E单片机之EEPROM应用程序
  9. 《羊了个羊》游戏C语言版代码
  10. Fastjson源码分析—1.2.24漏洞分析