import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* Created by wuqiqi on 15-11-14.
*/
public class TimestampUtils {
private static long day = 7;
/**
* 获得当前时间戳
*
* @return
*/
public static String getTimestamp() {
String unixTimeGMT;
try {
long unixTime = System.currentTimeMillis();
unixTimeGMT = unixTime + "";
} catch (Exception e) {
// TODO: handle exception
unixTimeGMT = "";
}
return unixTimeGMT;
}
/**
* 获得当前时间戳
*
* @return
*/
public static long getIntTimestamp() {
long unixTimeGMT = 0;
try {
unixTimeGMT = System.currentTimeMillis();
} catch (Exception e) {
// TODO: handle exception
}
return unixTimeGMT;
}
/**
* 返回时间戳间隔
*
* @return
*/
public static boolean compareTimestamp(long currentTimestap,
long oldTimestap) {
Boolean isExceed = false;
if (gapTimestamp(currentTimestap, oldTimestap) > 86400 * day) {
isExceed = true;
}
return isExceed;
}
public static long gapTimestamp(long currentTimestap, long oldTimestap) {
return (currentTimestap - oldTimestap);
}
/**
* 对时间戳格式进行格式化,保证时间戳长度为13位
*
* @param timestamp 时间戳
* @return 返回为13位的时间戳
*/
public static String formatTimestamp(String timestamp) {
if (timestamp == null || "".equals(timestamp)) {
return "";
}
String tempTimeStamp = timestamp + "00000000000000";
StringBuffer stringBuffer = new StringBuffer(tempTimeStamp);
return tempTimeStamp = stringBuffer.substring(0, 13);
}
/**
* 根据 timestamp 生成各类时间状态串
*
* @param timestamp 距1970 00:00:00 GMT的秒数
* @param format 格式
* @return 时间状态串(如:刚刚5分钟前)
*/
public static String getTimeState(String timestamp, String format) {
if (timestamp == null || "".equals(timestamp) || timestamp.startsWith("0000-00-00")) {
return "";
}
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
Date dt = null;// 转换成功的Date对象
try {
dt = dateFormat.parse(timestamp);
Long time = dt.getTime();// 这就是距离1970年1月1日0点0分0秒的毫秒数
timestamp = formatTimestamp(String.valueOf(time));
long _timestamp = Long.parseLong(timestamp);
if (System.currentTimeMillis() - _timestamp < 1 * 60 * 1000) {
return "刚刚";
} else if (System.currentTimeMillis() - _timestamp < 30 * 60 * 1000) {
return ((System.currentTimeMillis() - _timestamp) / 1000 / 60)
+ "分钟前";
} else {
Calendar now = Calendar.getInstance();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(_timestamp);
Date nowDate = now.getTime();
Date mutiDate = c.getTime();
int dayBetween = TimeUtils.daysBetween(nowDate, mutiDate);
if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE)) {
SimpleDateFormat sdf = new SimpleDateFormat("今天 HH:mm");
return sdf.format(c.getTime());
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE) - 1) {
SimpleDateFormat sdf = new SimpleDateFormat("昨天 HH:mm");
return sdf.format(c.getTime());
} else if (dayBetween < 31) {
return dayBetween + "天前";
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)) {
SimpleDateFormat sdf = null;
sdf = new SimpleDateFormat("M月d日 HH:mm");
return sdf.format(c.getTime());
} else {
SimpleDateFormat sdf = null;
if (format != null && !format.equalsIgnoreCase("")) {
sdf = new SimpleDateFormat(format);
} else {
sdf = new SimpleDateFormat("yyyy年M月d日 HH:mm");
}
return sdf.format(c.getTime());
}
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
public static String getTimeStateByFormat(String timestamp, String format) {
if (timestamp == null || "".equals(timestamp) || timestamp.startsWith("0000-00-00")) {
return "";
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dt = null;// 转换成功的Date对象
try {
dt = dateFormat.parse(timestamp);
Long time = dt.getTime();// 这就是距离1970年1月1日0点0分0秒的毫秒数
timestamp = formatTimestamp(String.valueOf(time));
long _timestamp = Long.parseLong(timestamp);
if (System.currentTimeMillis() - _timestamp < 1 * 60 * 1000) {
return "刚刚";
} else if (System.currentTimeMillis() - _timestamp < 30 * 60 * 1000) {
return ((System.currentTimeMillis() - _timestamp) / 1000 / 60)
+ "分钟前";
} else {
Calendar now = Calendar.getInstance();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(_timestamp);
Date nowDate = now.getTime();
Date mutiDate = c.getTime();
int dayBetween = TimeUtils.daysBetween(nowDate, mutiDate);
if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE)) {
SimpleDateFormat sdf = new SimpleDateFormat("今天 HH:mm");
return sdf.format(c.getTime());
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE) - 1) {
SimpleDateFormat sdf = new SimpleDateFormat("昨天 HH:mm");
return sdf.format(c.getTime());
} else if (dayBetween < 31) {
return dayBetween + "天前";
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)) {
SimpleDateFormat sdf = null;
sdf = new SimpleDateFormat("M月d日 HH:mm");
return sdf.format(c.getTime());
} else {
SimpleDateFormat sdf = null;
if (format != null && !format.equalsIgnoreCase("")) {
sdf = new SimpleDateFormat(format);
} else {
sdf = new SimpleDateFormat("yyyy年M月d日 HH:mm");
}
return sdf.format(c.getTime());
}
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
public static String getTimeStateByNearby(String timestamp, String format) {
if (timestamp == null || "".equals(timestamp) || timestamp.startsWith("0000-00-00")) {
return "";
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dt = null;// 转换成功的Date对象
try {
dt = dateFormat.parse(timestamp);
Long time = dt.getTime();// 这就是距离1970年1月1日0点0分0秒的毫秒数
timestamp = formatTimestamp(String.valueOf(time));
long _timestamp = Long.parseLong(timestamp);
if (System.currentTimeMillis() - _timestamp < 10 * 60 * 1000) {
return "刚刚";
} else if ((System.currentTimeMillis() - _timestamp >= 10 * 60 * 1000) && (System.currentTimeMillis() - _timestamp < 60 * 60 * 1000)){
return ((System.currentTimeMillis() - _timestamp) / 1000 / 60)
+ "分钟前";
} else if ((System.currentTimeMillis() - _timestamp >= 60 * 60 * 1000) && (System.currentTimeMillis() - _timestamp < 24 * 60 * 60 * 1000)){
return ((System.currentTimeMillis() - _timestamp) / 1000 / 60 / 60)
+ "小时前";
}else {
Calendar now = Calendar.getInstance();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(_timestamp);
Date nowDate = now.getTime();
Date mutiDate = c.getTime();
int dayBetween = TimeUtils.daysBetween(nowDate, mutiDate);
if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE) - 1) {
SimpleDateFormat sdf = new SimpleDateFormat("昨天");
return sdf.format(c.getTime());
} else if (dayBetween >= 2 && dayBetween < 7) {
return dayBetween + "天前";
} else {
return "7天前";
}
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/**
* v5.0圈子消息提醒时间显示
*
*/
public static String getTimeStateByCircleMessage(String timestamp, String format) {
if (timestamp == null || "".equals(timestamp) || timestamp.startsWith("0000-00-00")) {
return "";
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dt = null;// 转换成功的Date对象
try {
dt = dateFormat.parse(timestamp);
Long time = dt.getTime();// 这就是距离1970年1月1日0点0分0秒的毫秒数
timestamp = formatTimestamp(String.valueOf(time));
long _timestamp = Long.parseLong(timestamp);
if (System.currentTimeMillis() - _timestamp < 10 * 60 * 1000) {
return "刚刚";
} else if ((System.currentTimeMillis() - _timestamp >= 10 * 60 * 1000) && (System.currentTimeMillis() - _timestamp < 60 * 60 * 1000)){
return ((System.currentTimeMillis() - _timestamp) / 1000 / 60)
+ "分钟前";
} else if ((System.currentTimeMillis() - _timestamp >= 60 * 60 * 1000) && (System.currentTimeMillis() - _timestamp < 24 * 60 * 60 * 1000)){
return ((System.currentTimeMillis() - _timestamp) / 1000 / 60 / 60)
+ "小时前";
}else {
Calendar now = Calendar.getInstance();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(_timestamp);
Date nowDate = now.getTime();
Date mutiDate = c.getTime();
int dayBetween = TimeUtils.daysBetween(nowDate, mutiDate);
if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE) - 1) {
SimpleDateFormat sdf = new SimpleDateFormat("昨天");
return sdf.format(c.getTime());
} else if (dayBetween < 31) {
return dayBetween + "天前";
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)) {
SimpleDateFormat sdf = null;
sdf = new SimpleDateFormat("M月d日");
return sdf.format(c.getTime());
} else {
SimpleDateFormat sdf = null;
if (format != null && !format.equalsIgnoreCase("")) {
sdf = new SimpleDateFormat(format);
} else {
sdf = new SimpleDateFormat("yyyy年M月d日");
}
return sdf.format(c.getTime());
}
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
public static String getTime(String timestamp, String format) {
if (timestamp == null || "".equals(timestamp) || timestamp.startsWith("0000-00-00")) {
return "";
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dt = null;// 转换成功的Date对象
try {
dt = dateFormat.parse(timestamp);
Long time = dt.getTime();// 这就是距离1970年1月1日0点0分0秒的毫秒数
timestamp = formatTimestamp(String.valueOf(time));
long _timestamp = Long.parseLong(timestamp);
Calendar now = Calendar.getInstance();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(_timestamp);
Date nowDate = now.getTime();
Date mutiDate = c.getTime();
if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE)) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
return sdf.format(c.getTime());
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE) - 1) {
SimpleDateFormat sdf = new SimpleDateFormat("昨天 HH:mm");
return sdf.format(c.getTime());
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)
&& c.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& c.get(Calendar.DATE) == now.get(Calendar.DATE) - 2){
SimpleDateFormat sdf = new SimpleDateFormat("前天 HH:mm");
return sdf.format(c.getTime());
}else{
SimpleDateFormat sdf = null;
sdf = new SimpleDateFormat("M月d日 HH:mm");
return sdf.format(c.getTime());
}
// }
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/**
* 根据 timestamp 生成各类时间状态串
*
* @param timestamp 距1970 00:00:00 GMT的秒数
* @return 时间状态串(如:刚刚5分钟前)
*/
public static String getTimeState(String timestamp) {
if (timestamp == null || "".equals(timestamp) || timestamp.startsWith("0000-00-00")) {
return "";
}
try {
timestamp = formatTimestamp(timestamp);
long _timestamp = Long.parseLong(timestamp);
if (System.currentTimeMillis() - _timestamp < 1 * 60 * 1000) {
return "刚刚";
} else if (System.currentTimeMillis() - _timestamp < 30 * 60 * 1000) {
return ((System.currentTimeMillis() - _timestamp) / 1000 / 60) + "分钟前";
} else {
Calendar now = Calendar.getInstance();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(_timestamp);
if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR) && c.get(Calendar.MONTH) == now.get(Calendar.MONTH) && c.get(Calendar.DATE) == now.get(Calendar.DATE)) {
SimpleDateFormat sdf = new SimpleDateFormat("今天 HH:mm");
return sdf.format(c.getTime());
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR) && c.get(Calendar.MONTH) == now.get(Calendar.MONTH) && c.get(Calendar.DATE) == now.get(Calendar.DATE) - 1) {
SimpleDateFormat sdf = new SimpleDateFormat("昨天 HH:mm");
return sdf.format(c.getTime());
} else if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR)) {
SimpleDateFormat sdf = new SimpleDateFormat("M月d日 HH:mm");
return sdf.format(c.getTime());
} else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 HH:mm");
return sdf.format(c.getTime());
}
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/**
* 根据 timestamp 生成各类时间状态串
*
* @param timestamp 距1970 00:00:00 GMT的秒数
* @return 时间状态串(如:刚刚5分钟前)
*/
public static String getTimeState2(String timestamp) {
if (timestamp == null || "".equals(timestamp) || timestamp.startsWith("0000-00-00")) {
return "";
}
try {
timestamp = formatTimestamp(timestamp);
long _timestamp = Long.parseLong(timestamp);
if (System.currentTimeMillis() - _timestamp < 1 * 60 * 1000) {
return "刚刚";
} else if (System.currentTimeMillis() - _timestamp < 30 * 60 * 1000) {
return ((System.currentTimeMillis() - _timestamp) / 1000 / 60) + "分钟前";
} else {
Calendar now = Calendar.getInstance();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(_timestamp);
if (c.get(Calendar.YEAR) == now.get(Calendar.YEAR) && c.get(Calendar.MONTH) == now.get(Calendar.MONTH) && c.get(Calendar.DATE) == now.get(Calendar.DATE)) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
return sdf.format(c.getTime());
} else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
return sdf.format(c.getTime());
}
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/**
* 判断两个时间间隔是不是大于5分钟
*/
public static boolean compareTimestamp5Min(long currentTimestap, long oldTimestap) {
return Math.abs((currentTimestap - oldTimestap) / (60 * 1000)) >= 5;
}
public static float compareTimestampHour(long currentTimestap, long oldTimestap) {
return Math.abs((currentTimestap - oldTimestap) / (1.0f*60*60 * 1000));
}
/**
* 按格式获得时间字符串
* @param time 时间戳
* @param format 时间格式
* @return
*/
public static String getTimesIntToStr(long time, String format) {
Date date = new Date(time);
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
} catch (Exception e) {
}
return "";
}
/**
* 按格式获得时间date
* @param time 时间戳
* @param format 时间格式
* @return
*/
public static Date getDateFormStr(String time, String format){
Date date=null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(time);
} catch (Exception e) {
}
return date;
}
public static String getTimeStrToFormat(String time, String format){
Date date = getDateFormStr(time, "yyyy-MM-dd HH:mm:ss");
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
} catch (Exception e) {
}
return "";
}
public static String getWeekForLongTime(long time){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(time);
int curday = calendar.get(Calendar.DAY_OF_WEEK) - 1;
switch (curday){
case 0:
return "星期日";
case 1:
return "星期一";
case 2:
return "星期二";
case 3:
return "星期三";
case 4:
return "星期四";
case 5:
return "星期五";
case 6:
return "星期六";
}
return "";
}
public static String getWeekForLongTime2(long time){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(time);
int curday = calendar.get(Calendar.DAY_OF_WEEK) - 1;
switch (curday){
case 0:
return "周日";
case 1:
return "周一";
case 2:
return "周二";
case 3:
return "周三";
case 4:
return "周四";
case 5:
return "周五";
case 6:
return "周六";
}
return "";
}
public static String getMonthForStrTime(String date,String format){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(getDateFormStr(date,format).getTime());
int month = calendar.get(Calendar.MONTH);
switch (month){
case 0:
return "一月";
case 1:
return "二月";
case 2:
return "三月";
case 3:
return "四月";
case 4:
return "五月";
case 5:
return "六月";
case 6:
return "七月";
case 7:
return "八月";
case 8:
return "九月";
case 9:
return "十月";
case 10:
return "十一";
case 11:
return "十二";
}
return "";
}
/**
* 根据一个指定的时间戳 和当前时间戳 求相差值 换算成 x天x小时x分钟x秒
* @param timestamp 指定的时间
*/
public static String getDifferenceToSecond(long timestamp){
StringBuffer sb=new StringBuffer();
long days = timestamp / (1000 * 60 * 60 * 24);// 天数
long hours = (timestamp-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60);// 小时
long minutes = (timestamp-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60);// 分钟
long second= timestamp/1000%60;// 秒
if(days>0){
sb.append(days+"天");
}
if(hours>0){
sb.append(hours+"小时");
}
if(minutes>0){
sb.append(minutes+"分");
}
if(second>0){
sb.append(second+"秒");
}
return sb.toString();
}
/**
* 根据一个指定的时间戳 换算成 x小时x分钟x秒
* @param timestamp 指定的时间
*/
public static String gettimestampToHint(long timestamp){
StringBuffer sb=new StringBuffer();
long hours = timestamp/(1000* 60 * 60);// 小时
long minutes = (timestamp-hours*(1000* 60 * 60))/(1000* 60);// 分钟
long second= timestamp/1000%60;// 秒
String hoursF;
String minutesF;
String secondF;
if (hours < 10){
hoursF = "0" + hours;
}else{
hoursF = "" + hours;
}
if (minutes < 10){
minutesF = "0" + minutes;
}else {
minutesF = "" + minutes;
}
if (second < 10){
secondF = "0" + second;
}else{
secondF = "" + second;
}
sb.append(hoursF+":" + minutesF + ":" + secondF);
return sb.toString();
}
/**
* 日期 转换成时间戳
* @param date
* @return
*/
public static long date2Timestamp(String date){
//"2015-09-18 00:00:00
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
Date d;
try {
d=sdf.parse(date);
long l = d.getTime();
return l;
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
}
Android 获取当前分钟 android获取当前时间戳
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
获取当前时间戳
获取当前时间戳//方法 一System.currentTimeMillis();//方法 二Calendar.getIn
时间戳 currentTimeMillis system Calendar date