在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毫秒的时间戳(这个时间并无特殊的含义,随便选的)。unix
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秒的时间戳。code
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(); }
以上就是我总结的一些获取时间戳的方法,若是平时须要快速进行时间与时间戳之间的转换,也能够在站长工具获得快速解决:Unix时间戳开发