前言
数字时间戳技术是数字签名技术一种变种的应用。是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数(引用自百度百科)
在java开发过程中经常会遇到统计某一天或是某一个月的数据,因此常常需要获取截取数据的两个时间戳(比如统计今天的数据,则需要获取一个开始时间为今天零点以及一个结束时间为明天零点),然后根据数据相关的时间是否在该时间区间内来判断是否将其计入统计数据中。
一、java获取时间戳
话不多说,首先我们先拿上面的例子说起吧。如何获取今天零点以及明天零点的两个时间戳。
public Long getToday(){ DateTime now = new DateTime(); return new DateTime(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), 0, 0, 0, 0).getMillis(); } public Long getTomorrow(){ DateTime now = new DateTime(); return new DateTime(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), 0, 0, 0, 0).plusDays(1).getMillis(); }
上面的方法中用到了DateTime中的plusDays(),同理,你如果需要获取下 个星期(年,月,时,分,秒,毫秒)前的时间戳,都有同样的plusYears(int X),plusMonths(int X)等等与之对应,如果要获取今天之前的就把传入一个负整数参数即可。
然而很多时候我们需要某个特定时间的时间戳,比如这个月5号14点23分6秒138毫秒的时间戳(这个时间并没有特殊的含义,随便选的)。
public Long getTime(){ Long now = new Date().getTime(); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(now); calendar.set(Calendar.DAY_OF_MONTH, 5); calendar.set(Calendar.HOUR, 14); calendar.set(Calendar.MINUTE, 23); calendar.set(Calendar.SECOND, 6); calendar.set(Calendar.MILLISECOND, 138); return calendar.getTimeInMillis(); }
再比如我们可能需要知道这个星期二的10点10分10秒的时间戳。
public Long getTime(){ Long now = new Date().getTime(); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(now); calendar.set(Calendar.DAY_OF_WEEK, 2); calendar.set(Calendar.HOUR, 10); calendar.set(Calendar.MINUTE, 10); calendar.set(Calendar.SECOND, 10); return calendar.getTimeInMillis(); }
二、Java中两种获取精确到秒的时间戳的方法
Java中的时间戳的毫秒主要通过最后的三位来进行计量的,下面给大家分享从网上整理的两种不同的方式将最后三位去掉。
方法一:通过String.substring()方法将最后的三位去掉
/** * 获取精确到秒的时间戳 * @return */ public static int getSecondTimestamp(Date date){ if (null == date) { return 0; } String timestamp = String.valueOf(date.getTime()); int length = timestamp.length(); if (length > 3) { return Integer.valueOf(timestamp.substring(0,length-3)); } else { return 0; } }
方法二:通过整除将最后的三位去掉
/** * 获取精确到秒的时间戳 * @param date * @return */ public static int getSecondTimestampTwo(Date date){ if (null == date) { return 0; } String timestamp = String.valueOf(date.getTime()/1000); return Integer.valueOf(timestamp); }
以上就是我总结的一些获取时间戳的方法,如果平时需要快速进行时间与时间戳之间的转换,也可以在站长工具得到快速解决:Unix时间戳
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
我选择“无时区”是因为我知道我的应用程序使用的所有时间戳总是UTC。就我得到的文档而言,“with timestamp”的唯一区别是,我可以提供其他时区的值,然后将其转换为UTC。然而,我想避免这样的自动转换,因为如果我知道我的值是UTC,它们几乎没有任何好处。 当我在测试表中添加新记录并使用pgAdmin查看表的内容时,我可以看到插入日期已正确地保存为UTC格式。 但是,当我尝试使用JDBC选择
问题内容: 在编写Web应用程序时,将 所有 日期时间(服务器端)存储在数据库中作为UTC时间戳是有意义的。 当我发现您无法在JavaScript中对时区进行操作方面自然无法做到这一点时,我感到非常惊讶。 我稍微扩展了Date对象。这个功能有意义吗?基本上,每次我向服务器发送任何内容时,都会使用该功能格式化时间戳记。 您在这里看到任何重大问题吗?还是从另一个角度解决问题? 在我看来,这有点令人费解
我已经看过stackoverflow了,甚至看过一些建议的问题,但似乎没有一个答案,如何在C#中获得unix时间戳?
本文向大家介绍Python 时间戳之获取整点凌晨时间戳的操作方法,包括了Python 时间戳之获取整点凌晨时间戳的操作方法的使用技巧和注意事项,需要的朋友参考一下 Python时间戳操作很多,每次用点时候总是去查,查的麻烦,现在自己也好好归纳一下。 我现在刚好有个需求需要获取当天零点时间戳,但是网上查的大部分都是用时间戳相减,或者用时区的方式,总感觉不是很好,我就自己写了一个。 获取凌晨时间
在我的购物车应用程序中,我将所有购买日期存储在时间戳中。 假设,我想在n天前获得购买日期的时间戳(n是可配置的)。我将如何使用java获得它? 例如:类似于purchasedatebory5 days = current timestamp _ in _ days-5;我正在使用获取当前时间戳 我怎么能从中减去n天。我是初学者。请对此提供帮助。
问题内容: 是否有可能为本地运行的Java应用程序和作为applet和/或JNLP Webapps可靠地确定给定类的编译时间戳? 问题答案: 根据Java虚拟机规范,类文件格式不需要任何类型的时间戳,因此,您最好的办法是检查包含该类的类或Jar文件的修改时间。不幸的是,文件系统操作(尤其是在各种主机之间)可能无法保留此类时间戳。 我会说默认情况下没有可靠的方法。但是,您可以在构建过程中轻松地将这样