## 日常总结获取时间类之===>>>时间戳
前提:
在日常项目中,难免会遇到跟时间日期有关的功能需求
本文皆用 Java 8版本之前的java.util包中的 Date 和 Calendar来处理业务
所以最近博主研究之后在此总结一下===>>
直接上代码,总结包括心得都在代码中*(可随意修改):
1、获取时间戳 ------>>> 依据指定日期,指定格式
/** 1.获取时间戳 --->>> 根据指定日期,指定格式
* 依据指定日期格式获取时间戳
* @param format 日期格式:如 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
* @param date 日期: 如 2020-05-02 14:29:08 日期和格式一定要对应
* @return 1588400948
* 补充: 通过时间戳转换指定格式的日期方法:
* new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(1588400948 * 1000L))
* 返回String 类型 2020-05-02 14:29:08
* @throws ParseException
*/
public static Long getTimestamp(SimpleDateFormat format, String date) throws ParseException {
Date dat = format.parse(date);
long timestamp = dat.getTime();
return timestamp/1000;
}
2、获取绝对秒值------>>>指定年份的当前时间绝对秒(10位时间戳)
/** 2. 获取绝对秒值
* 获取 指定年份 --->>> 的当前时间 绝对秒值
* @param year 输入年份数值,比如去年 输入1,前年输入2
* @return 返回 long类型的 时间戳 如:1561569227
*/
public static Long getTimeYear(int year){
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.YEAR,-year);
Long time = calendar.getTimeInMillis();
return time/1000;
}
3、获取0点绝对秒值------>>>无参
/** 3. 获取 0点 绝对秒值 无参
* 主要实现: 根据 new Date()获取
* 获取今天时间的 0点 绝对秒值
* @return 返回 long 类型的 13位时间戳
*/
public static Long getTodayZeroTime(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar cal = Calendar.getInstance();
try {
cal.setTime(simpleDateFormat.parse( simpleDateFormat.format(new Date())));
} catch (ParseException e) {
e.getMessage();
}
return cal.getTimeInMillis();
}
4、获取0点绝对秒值(13位)------>>>根据日期获取(日期格式可改变)
/** 4. 获取 0点 绝对秒值 -- 根据日期获取
* 获取指定日期 的 0点绝对秒值 此处为13位 也可以是10位 ,都无所谓,根据自己需要 来写
* 可以利用 getTimeInMillisToDate(Long timetemp,String format) 去查看 是否为 0点秒值 转换成功
* @param date 指定日期 如 20200627
* @param format 指定格式 必须要与 日期格式对应 如20200627 对应 yyyyMMdd 2020-06-27 对应 yyyy-MM-dd
* @return Long 类型的 时间戳 如:1593187200000 10位的需要/1000 结果为 1593187200
*/
public static Long getZeroSecondTimeWithType(String date,String format){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
Calendar calendar = Calendar.getInstance();
try {
Date dat = simpleDateFormat.parse(date);
calendar.setTime(dat);
} catch (ParseException e) {
e.printStackTrace();
}
return calendar.getTimeInMillis();
}
5、获取0点绝对秒值------>>>根据10位时间戳
/** 5. 获取0点绝对秒值 ---> 根据10位时间戳
* 根据10位时间戳获取对应日期的0点绝对秒值
* @param time
* @return
* @throws ParseException
*/
public static Long getZeroTimestampWithTime(long time) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(sdf.format(new Date(time * 1000L)));
return date.getTime()/1000;
//Calendar cal = Calendar.getInstance();
//cal.setTime(date); 第二种方法
//return cal.getTimeInMillis()/1000;
}
结束语:
希望我的这点代码能为刚刚步入java行业的小伙伴提供帮助,在此希望大家可以在java的道路越走越远,坚持下去,之后还会更新出获取日期,以及java8的一些替代获取日期、时间戳,谢谢大家!