您的位置:首页 > 移动开发 > Android开发

Android(java)时间转换星期 昨天 今天 几分钟前工具

2017-07-01 12:27 555 查看
摘要来自:http://blog.csdn.net/syif88/article/details/53517613

显示样例如下:





代码如下:package utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TimeUtil {
static SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

/**
* 24小时制转化成12小时制
*
* @param strDay
*/
public static String timeFormatStr(Calendar calendar, String strDay) {
String tempStr = "";
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour > 11) {
tempStr = "下午" + " " + strDay;
} else {
tempStr = "上午" + " " + strDay;
}
return tempStr;
}

/**
* 时间转化为星期
*
* @param indexOfWeek
* 星期的第几天
*/
public static String getWeekDayStr(int indexOfWeek) {
String weekDayStr = "";
switch (indexOfWeek) {
case 1:
weekDayStr = "星期日";
break;
case 2:
weekDayStr = "星期一";
break;
case 3:
weekDayStr = "星期二";
break;
case 4:
weekDayStr = "星期三";
break;
case 5:
weekDayStr = "星期四";
break;
case 6:
weekDayStr = "星期五";
break;
case 7:
weekDayStr = "星期六";
break;
}
return weekDayStr;
}

/**
* 将时间戳格式化,13位的转为10位
*
* @param timestamp
* @return
*/
public static long timestampFormate(long timestamp) {
String timestampStr = timestamp + "";
if (timestampStr.length() == 13) {
timestamp = timestamp / 1000;
}
return timestamp;
}

/**
* 获取日起时间秒差
*
* @param time
* 需要格式化的时间 如"2014-07-14 19:01:45"
* @param pattern
* 输入参数time的时间格式 如:"yyyy-MM-dd HH:mm:ss"
* <p/>
* 如果为空则默认使用"yyyy-MM-dd HH:mm:ss"格式
* @return time为null,或者时间格式不匹配,输出空字符""
* @throws ParseException
*/
public static long formatLongTime(String time, String pattern) {
long dTime = 0;
if (time != null) {
if (pattern == null)
pattern = "yyyy-MM-dd HH:mm:ss";
Date tDate;
try {
tDate = new SimpleDateFormat(pattern).parse(time);
Date today = new Date();
if (tDate != null) {
dTime = (today.getTime() - tDate.getTime()) / 1000;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return dTime;
}

/**
* 获取日期时间戳
*
* @param time
* 需要格式化的时间 如"2014-07-14 19:01:45"
* @param pattern
* 输入参数time的时间格式 如:"yyyy-MM-dd HH:mm:ss"
* <p/>
* 如果为空则默认使用"yyyy-MM-dd HH:mm:ss"格式
* @return time为null,或者时间格式不匹配,输出空字符""
* @throws ParseException
*/
public static long timeStamp(String time, String pattern) {
long dTime = 0;
if (time != null) {
if (pattern == null)
pattern = "yyyy-MM-dd HH:mm:ss";
Date tDate;
try {
tDate = new SimpleDateFormat(pattern).parse(time);
if (tDate != null) {
dTime = tDate.getTime() / 1000;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return dTime;
}

/**
* 时间转化为显示字符串
*
* @param timeStamp
* 单位为秒
*/
public static String getTimeStr(long timeStamp) {
if (timeStamp == 0)
return "";
Calendar inputTime = Calendar.getInstance();
inputTime.setTimeInMillis(timeStamp * 1000);
Date currenTimeZone = inputTime.getTime();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
if (calendar.before(inputTime)) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
return sdf.format(currenTimeZone);
}
calendar.add(Calendar.DAY_OF_MONTH, -1);
if (calendar.before(inputTime)) {
return "昨天";
} else {
calendar.add(Calendar.DAY_OF_MONTH, -5);
if (calendar.before(inputTime)) {
return getWeekDayStr(inputTime.get(Calendar.DAY_OF_WEEK));
} else {
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
int year = inputTime.get(Calendar.YEAR);
int month = inputTime.get(Calendar.MONTH);
int day = inputTime.get(Calendar.DAY_OF_MONTH);
return year + "/" + month + "/" + day;
}

}

}

/**
* 时间转化为聊天界面显示字符串
*
* @param timeStamp
* 单位为秒
*/
public static String getChatTimeStr(long timeStamp) {
if (timeStamp == 0)
return "";
Calendar inputTime = Calendar.getInstance();
String timeStr = timeStamp + "";
if (timeStr.length() == 10) {
timeStamp = timeStamp * 1000;
}
inputTime.setTimeInMillis(timeStamp);
Date currenTimeZone = inputTime.getTime();
Calendar calendar = Calendar.getInstance();
// if (calendar.before(inputTime)){
// //当前时间在输入时间之前
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy" +
// "年"+"MM"+"月"+"dd"+"日");
// return sdf.format(currenTimeZone);
// }
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
if (calendar.before(inputTime)) {
SimpleDateFormat sdf = new SimpleDateFormat("h:mm");
return timeFormatStr(inputTime, sdf.format(currenTimeZone));
}
calendar.add(Calendar.DAY_OF_MONTH, -1);
if (calendar.before(inputTime)) {
SimpleDateFormat sdf = new SimpleDateFormat("h:mm");
return "昨天" + " " + timeFormatStr(inputTime, sdf.format(currenTimeZone));
} else {
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
if (calendar.before(inputTime)) {
SimpleDateFormat sdf = new SimpleDateFormat("M" + "月" + "d" + "日");
String temp1 = sdf.format(currenTimeZone);
SimpleDateFormat sdf1 = new SimpleDateFormat("h:mm");
String temp2 = timeFormatStr(inputTime, sdf1.format(currenTimeZone));
return temp1 + temp2;
} else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy" + "/" + "M" + "/" + "d" + " ");
String temp1 = sdf.format(currenTimeZone);
SimpleDateFormat sdf1 = new SimpleDateFormat("h:mm");
String temp2 = timeFormatStr(inputTime, sdf1.format(currenTimeZone));
return temp1 + temp2;
}

}

}

/**
* 群发使用的时间转换
*/
public static String multiSendTimeToStr(long timeStamp) {

if (timeStamp == 0)
return "";
Calendar inputTime = Calendar.getInstance();
String timeStr = timeStamp + "";
if (timeStr.length() == 10) {
timeStamp = timeStamp * 1000;
}
inputTime.setTimeInMillis(timeStamp);
Date currenTimeZone = inputTime.getTime();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
if (calendar.before(inputTime)) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
return sdf.format(currenTimeZone);
}
calendar.add(Calendar.DAY_OF_MONTH, -1);
if (calendar.before(inputTime)) {
4000

@SuppressWarnings("unused")
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
return "昨天";
} else {
calendar.add(Calendar.DAY_OF_MONTH, -5);
if (calendar.before(inputTime)) {
return getWeekDayStr(inputTime.get(Calendar.DAY_OF_WEEK));
} else {
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
if (calendar.before(inputTime)) {
SimpleDateFormat sdf = new SimpleDateFormat("M" + "/" + "d" + " ");
String temp1 = sdf.format(currenTimeZone);
SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm");
String temp2 = sdf1.format(currenTimeZone);
return temp1 + temp2;
} else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy" + "/" + "M" + "/" + "d" + " ");
String temp1 = sdf.format(currenTimeZone);
SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm");
String temp2 = sdf1.format(currenTimeZone);
return temp1 + temp2;
}
}
}
}

/**
* 格式化时间(输出类似于 刚刚, 4分钟前, 一小时前, 昨天这样的时间)
*
* @param time
* 需要格式化的时间 如"2014-07-14 19:01:45"
* @param pattern
* 输入参数time的时间格式 如:"yyyy-MM-dd HH:mm:ss"
* <p/>
* 如果为空则默认使用"yyyy-MM-dd HH:mm:ss"格式
* @return time为null,或者时间格式不匹配,输出空字符""
*/
public static String formatDisplayTime(String time, String pattern) {
String display = "";
int tMin = 60 * 1000;
int tHour = 60 * tMin;
int tDay = 24 * tHour;

if (time != null) {
if (pattern == null)
pattern = "yyyy-MM-dd HH:mm:ss";
try {
Date tDate = new SimpleDateFormat(pattern).parse(time);
Date today = new Date();
SimpleDateFormat thisYearDf = new SimpleDateFormat("yyyy");
SimpleDateFormat todayDf = new SimpleDateFormat("yyyy-MM-dd");
Date thisYear = new Date(thisYearDf.parse(thisYearDf.format(today)).getTime());
Date yesterday = new Date(todayDf.parse(todayDf.format(today)).getTime());
Date beforeYes = new Date(yesterday.getTime() - tDay);
if (tDate != null) {
@SuppressWarnings("unused")
SimpleDateFormat halfDf = new SimpleDateFormat("MM月dd日");
long dTime = today.getTime() - tDate.getTime();
if (tDate.before(thisYear)) {
display = new SimpleDateFormat("yyyy年MM月dd日").format(tDate);
} else {

if (dTime < tMin) {
display = "刚刚";
} else if (dTime < tHour) {
display = (int) Math.ceil(dTime / tMin) + "分钟前";
} else if (dTime < tDay && tDate.after(yesterday)) {
display = (int) Math.ceil(dTime / tHour) + "小时前";
} else if (tDate.after(beforeYes) && tDate.before(yesterday)) {
display = "昨天 " + new SimpleDateFormat("HH:mm").format(tDate);
} else {
display = multiSendTimeToStr(tDate.getTime() / 1000);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

return display;
}

public static void main(String[] args) {
//TODO 当前时间
System.out.println(sf.format(new Date()));
// TODO 字传入时间日期字符串转换群发使用时间输出
System.out.println(formatDisplayTime("2017-06-30 10:34:00", null));
// TODO 先 转换成时间戳 转换成对应的时间输出格式
long timeStamp = timeStamp("2017-06-29 10:34:00", null);
System.out.println(multiSendTimeToStr(timeStamp));//群发使用时间
System.out.println(getChatTimeStr(timeStamp));//时间转化为聊天界面显示字符串
System.out.println(getTimeStr(timeStamp));//时间转化为显示字符串

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐