时间:2021-05-20
日期时间是Java一个重要的数据类型,常见的日期时间格式通常为“yyyy-MM-dd HH:mm:ss”,但是计算机中存储的日期时间并非字符串形式,而是长整型的时间戳。因为字符串又占用空间又难以运算,相比之下,长整型只占用四个字节,普通的加减乘除运算更是不在话下,所以时间戳是最佳的日期时间存储方案。
获取时间戳的代码很简单,只需调用System类的currentTimeMillis方法即可,如下所示:
众所周知,时间戳以毫秒为单位,为了求得它的计时起点,可以将其转换时间单位,先把毫秒的数量转成秒的数量,再把秒的数量转成分钟的数量,再把分钟的数量转成小时的数量,再把小时的数量转成天的数量,最后把天的数量转成年的数量。不过每年的天数不固定,像平年有365天,闰年有366天,按照四年一闰,平均每年的天数=(365+365+365+366)/4=365.25。于是把时间戳转为年份数量的代码就成了下面这样:
int years = (int) (timeFromSystem/1000/60/60/24/365.25);System.out.println("years="+years);运行上述转换代码,可见如下的输出日志:
timeFromSystem=1595578123444
years=50
由于当前年份是2020,从2020往前倒推50年,正好是1970年,原来时间戳是从1970年开始累加的呀。
通过System类只是获取时间戳的第一种方式,正如茴香豆的茴有四种写法那样,时间戳也有四种获取方式,除了之前提到的System类,还有下列三种时间戳获取方式:
1、从Date实例获取时间戳
调用Date实例的getTime方法即可获得对应的时间戳,获取代码示例如下:
// 从日期实例获取对应的时间戳long timeFromDate = new Date().getTime();System.out.println("timeFromDate="+timeFromDate);2、从Calendar实例获取时间戳
调用Calendar实例的getTimeInMillis方法即可获得对应的时间戳,获取代码示例如下:
// 从日历实例获取对应的时间戳long timeFromCalendar = Calendar.getInstance().getTimeInMillis();System.out.println("timeFromCalendar="+timeFromCalendar);3、从LocalDateTime实例获取时间戳
从LocalDateTime获取时间戳稍微麻烦些,得先把LocalDateTime实例转为Instant实例,再调用Instant实例的toEpochMilli方法获得对应的时间戳,获取代码示例如下:
// 从本地日期时间实例获取对应的时间戳LocalDateTime localDateTime = LocalDateTime.now();Instant instant1 = localDateTime.toInstant(ZoneOffset.ofHours(8));long timeFromLocal1 = instant1.toEpochMilli();System.out.println("timeFromLocal1="+timeFromLocal1);上面获取代码基于北京时间,所以转为Instant实例时使用了东八区,倘若在东八区以外的其他地区运行上述代码,就无法得到正确的当地时间戳,此时要先设置当地的默认时区,再将LocalDateTime实例转为Instant实例,获取代码示例如下:
Instant instant2 = localDateTime.atZone(ZoneId.systemDefault()).toInstant();long timeFromLocal2 = instant1.toEpochMilli();System.out.println("timeFromLocal2="+timeFromLocal2);尽管时间戳的获取方式多达四种,然而最高效的还是第一种System方式,它不但代码最简洁,时间消耗也最小。
有了时间戳之后,还能将它转换为对应的日期、日历和本地日期时间。转换过程说明如下:
1、把时间戳转换为Date类型,调用Date实例的setTime方法即可。
2、把时间戳转换为Calendar类型,调用Calendar实例的setTimeInMillis方法即可。
3、把时间戳转换为LocalDateTime类型,先调用Instant类的ofEpochMilli方法,把时间戳转成Instant实例;再调用LocalDateTime类的ofInstant方法,把Instant实例转成LocalDateTime实例。
下面是把时间戳转为日期、日历和本地日期时间的代码例子:
到此这篇关于Java中时间戳的获取和转换的示例分析的文章就介绍到这了,更多相关Java 时间戳 获取转换内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java将Unix时间戳转换成指定格式日期,供大家参考,具体内容如下当从服务器获取数据的时候,有时候获取的数据中的时间在很多的情况下是时间戳类似于这样14730
Java中获取时间戳三种方式对比最近项目开发过程中发现了项目中获取时间戳的业务。而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一
本文实例讲述了PHP获取毫秒级时间戳的方法。分享给大家供大家参考。具体分析如下:PHP本身没有提供获取毫秒级时间戳的函数,java里面可以通过gettime()
time模块常用的中时间的转换。python中的时间戳:通俗讲就是某个时刻的时间,单位是秒;获取当前时间的时间戳:time.time()1)没有参数,2)返回从
整理总结一下python中最常用的一些时间戳和时间格式的转换第一部分:获取当前时间和10位13位时间戳importdatetime,time'''获取当前时间'