TimestampHelper 时间戳工具类

package cn.zoshu.common.utils;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class TimestampHelper
{
	/**
	 * @see
	 * @获得当前时间的时间戳
	 * @return int
	 */
	public static int getTimestamp(){
		Date nowTime = new Date();
		long lTime = nowTime.getTime()/1000;
		String sTime = String.valueOf(lTime);
		int iTime = Integer.valueOf(sTime);
		return iTime;
	}
	
	/**
	 * @see 将传入的时间变为时间戳
	 * @param time(yyyy-MM-dd HH:mm:ss)
	 * @return int
	 * @throws ParseException
	 */
	public static int getTimestamp(String time) throws ParseException{
		
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date dTime = format.parse(time);
		long lTime = dTime.getTime()/1000;
		time = String.valueOf(lTime);
		int iTime = Integer.valueOf(time);
		return iTime;
	}

	/**
	 * @see 将传入的生日变为时间戳
	 * @param time(yyyy-MM-dd)
	 * @return int
	 * @throws ParseException
	 */
	public static int birthdayStamp(String time) throws ParseException{

		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date dTime = format.parse(time);
		long lTime = dTime.getTime()/1000;
		time = String.valueOf(lTime);
		int iTime = Integer.valueOf(time);
		return iTime;
	}

	/**
	 * 日期格式化
	 *
	 * @param date    需要格式化的日期
	 * @param pattern 时间格式,如:yyyy-MM-dd HH:mm:ss
	 * @return 返回格式化后的时间字符串
	 */
	private static String format(Date date, String pattern) {
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(date);
	}

	/**
	 * 2016-11-08 14:39:38
	 * pattern yyyy-MM-dd HH:mm:ss
	 * 02-27 17:24
	 */
	public static String showDate(Date date, String pattern) {
		String dateStr = format(date, pattern);
		int month = Integer.parseInt(dateStr.substring(0, 2));
		int day = Integer.parseInt(dateStr.substring(3, 5));
		String hour = dateStr.substring(6, 8);
		String minute = dateStr.substring(9, 11);

		long addtime = date.getTime();
		long today = System.currentTimeMillis();//当前时间的毫秒数
		Date now = new Date(today);
		String nowStr = format(now, pattern);
		int nowDay = Integer.parseInt(nowStr.substring(3, 5));
		String result = "";
		long l = today - addtime;//当前时间与给定时间差的毫秒数
		long days = l / (24 * 60 * 60 * 1000);//这个时间相差的天数整数,大于1天为前天的时间了,小于24小时则为昨天和今天的时间
		long hours = (l / (60 * 60 * 1000) - days * 24);//这个时间相差的减去天数的小时数
		long min = ((l / (60 * 1000)) - days * 24 * 60 - hours * 60);//
		long s = (l / 1000 - days * 24 * 60 * 60 - hours * 60 * 60 - min * 60);
		if (days > 0) {
			if (days > 0 && days < 2) {
				result = "前天" + hour + ":" + minute;
			} else {
				result = month + "-" + day + " " + hour + ":" + minute;
			}
		} else if (hours > 0) {
			if (day != nowDay) {
				result = "昨天" + hour + ":" + minute;
			} else {
				result = hours + "小时 前";
			}
		} else if (min >= 0) {
			if (min >= 0 && min < 15) {
				result = "刚刚";
			} else {
				result = min + "分 前";
			}
		} else {
			result = s + "秒 前";
		}
		return result;
	}


	/**
	 * depiction: 根据时间戳来判断当前的时间是几天前,几分钟,刚刚
	 * @date: 2019-05-23
	 */
	public static String getTimeState(String long_time){
		String long_by_13="1000000000000";
		String long_by_10="1000000000";
		if(Long.valueOf(long_time)/Long.valueOf(long_by_13)<1){
			if(Long.valueOf(long_time)/Long.valueOf(long_by_10)>=1){
				long_time=long_time+"000";
			}
		}
		Timestamp time=new Timestamp(Long.valueOf(long_time));
		Timestamp now=new Timestamp(System.currentTimeMillis());
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		long day_conver=1000*60*60*24;
		long hour_conver=1000*60*60;
		long min_conver=1000*60;
		long time_conver=now.getTime()-time.getTime();
		long temp_conver;
		if((time_conver/day_conver)<3){
			temp_conver=time_conver/day_conver;
			if(temp_conver<=2 && temp_conver>=1){
				return temp_conver+"天前";
			}else{
				temp_conver=(time_conver/hour_conver);
				if(temp_conver>=1){
					return temp_conver+"小时前";
				}else {
					temp_conver=(time_conver/min_conver);
					if(temp_conver>=1){
						return temp_conver+"分钟前";
					}else{
						return "刚刚";
					}
				}
			}
		}else{
			return format.format(time);
		}
	}

	/**
	 * 通过时间秒毫秒数判断两个时间的间隔
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static int betweenDatys(long date1,long date2)
	{
		int days = (int) ((date2 - date1) / (1000*3600*24));
		return days;
	}

	/**
	 * 得到当月起始时间
	 *
	 * @param date
	 * @return
	 */
	public static Calendar getMonthStart(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar;
	}

	/**
	 * 得到month的终止时间点.
	 *
	 * @param date
	 * @return
	 */
	/**
	 * 取得月最后一天
	 *
	 * @param date
	 * @return
	 */
	public static Calendar getLastDateOfMonth(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
		return c;
	}


	/*
	 * @Description: 获取当前月1号0点的时间戳
	 * @Date: 2020-07-17
	 */
	public static Integer getMonthNumOneStamp(){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		return Math.toIntExact(calendar.getTime().getTime() / 1000);
	}

	/*
	 * @Description: 获取当前年1月1号0点的时间戳
	 * @Date: 2020-07-17
	 */
	public static Integer getYearNumOneStamp(){
		Calendar calendar = Calendar.getInstance();// 获取当前日期
		calendar.setTime(new Date());
		calendar.add(Calendar.YEAR, 0);
		calendar.add(Calendar.DATE, 0);
		calendar.add(Calendar.MONTH, 0);
		calendar.set(Calendar.DAY_OF_YEAR, 1);
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		calendar.set(Calendar.MILLISECOND, 0);
		return Math.toIntExact(calendar.getTime().getTime() / 1000);
	}

	/*
	 * @Description: 获取指定年1月1号0点的时间戳
	 * @Date: 2020-07-17
	 */
	public static Integer getOneYearNumOneStamp(int timeStamp){
		Calendar calendar = Calendar.getInstance();// 获取当前日期
		Long stamp= new Long((long)timeStamp*1000);
		calendar.setTime(new Date(stamp));
		calendar.add(Calendar.YEAR, 0);
		calendar.add(Calendar.DATE, 0);
		calendar.add(Calendar.MONTH, 0);
		calendar.set(Calendar.DAY_OF_YEAR, 1);
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		calendar.set(Calendar.MILLISECOND, 0);
		return Math.toIntExact(calendar.getTime().getTime() / 1000);
	}

	/*
	 * @Description: 获取今天0点的时间戳
	 * @Date: 2020-07-17
	 */
	public static Integer getDayZeroStamp(){
		long current= System.currentTimeMillis();
		long zero=current/(1000*3600*24)*(1000*3600*24)- TimeZone.getDefault().getRawOffset();//今天零点零分零秒的毫秒数
		return Math.toIntExact(zero / 1000);
	}

	public static void main(String[] args){
		System.out.println(TimestampHelper.getOneYearNumOneStamp(1411976381));
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值