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));
}
}
TimestampHelper 时间戳工具类
最新推荐文章于 2024-09-11 10:01:30 发布