Java日期时间处理
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日期时间处理相关推荐
- java日期时间转日期_Java时间和日期指南
java日期时间转日期 长期以来,正确处理日期,时间,时区,夏令时,and年等一直是我的烦恼. 本文并不是一个全面的指南时域,请参阅日期和时间在Java中 -更详细,但略有下降,ekhem,日期. 它 ...
- java8 日期api_我们多么想要新的Java日期/时间API?
java8 日期api 当前的Java.net 民意测验问题是:" 对于用Java 8实现的JSR-310(新的日期和时间API)有多重要? "在我撰写本文时,将近150位受访者投 ...
- 我们多么想要新的Java日期/时间API?
当前的Java.net 民意测验问题是:" 对于用Java 8实现的JSR-310(新的日期和时间API)有多重要? "在我撰写本文时,将近150位受访者投了赞成票,绝大多数人回答 ...
- java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间
正文之前 终于好像仿佛看完了菜鸟教程的Java课程,感觉自己收获颇丰!很好,Java看完之后正愁如何开始进阶呢!结果发现菜鸟还准备了Java实例这种好东西!简直就是教程界的良心啊 !!!没事,先写写笔 ...
- java datetime 转换_如何实现Java日期时间格式转换
Java日期时间以及日期相互转换 Java日期时间,以及相互转化,供大家参考,具体内容如下 package com.study.string; import java.text.ParseExcept ...
- 【零基础学Java】—Java 日期时间(三十二)
[零基础学Java]-Java 日期时间(三十二) DateFormat 是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间. 日期/时间格式化子类(如SimpleDateFor ...
- 【零基础学Java】—Java 日期时间(三十一)
[零基础学Java]-Java 日期时间(三十一) java.util.Date:表示日期和时间的类 类Date表示特定的瞬间,精确到毫秒 毫秒:千分之一秒,1000毫秒=1秒 特定的时间:一个时间点 ...
- java 日期时间工具_Java日期时间类工具
Java日期时间类工具 Java日期时间类 Date类 Java提供的Date类和Calendar类用于处理日期和时间的类,包括创建日期,时间对象,获取系统当前日期,时间 等操作.但Date类无法实现 ...
- java awt android_Android开发基础之Java 日期时间
Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date ...
- 一文告诉你Java日期时间API到底有多烂
前言 你好,我是A哥(YourBatman). 好看的代码,千篇一律!难看的代码,卧槽卧槽~其实没有什么代码是"史上最烂"的,要有也只有"史上更烂". 日期是商 ...
最新文章
- mysql 逻辑架构
- Oracle Performance Active Session History ASH图
- php下dat函数e,PHP 常用函数记录 一
- 【机器学习】扎实入门机器学习的路子
- Uipath 学习栏目基础教学:8、uipath 屏幕抓取获取文本
- u-net语义分割_使用U-Net的语义分割
- MySQL查看数据库系统正在运行的进程
- jQuery函数的等价原生函数代码示例
- 兼容各种浏览器的自动左右滚动兼左右点击滚动代码
- 数据结构C语言实现—队列操作
- 后台窗口截图_万人拥捧的截图软件来啦!让你的工作效率提升不止一倍!
- Java Web:使用jstl标签
- 《Using OpenRefine》翻译~14
- matlab如何计算方差分析,matlab-方差分析.ppt
- psn账号修改地址可以转服务器,PSN换卡换服换账户教程
- 宝塔面板php无法安装,宝塔面板php无法安装怎么办
- dedecms调用友情链接代码
- 中证500-小盘股预警2015.4.2
- 怎么批量提取网站中的内容-免费网页数据提取软件
- 小心肝队-冲刺日志(第十天)